他愛もない話について
- 気楽に書きますので、気楽に読んでください。
- あまり役に立たない内容になるかと思います。
- 特に何かを決めて書いているわけではなく、書いている内に、横道にそれたりするかもしれないので、最後はどんな話になっているのかわかりません。
- 僕の主観や記憶に依存する内容が多くなるので、間違っている内容もあると思います。(書いている内容について基本、裏付けを取ったりしません)
習うより慣れろ
プログラミングを何も知らない人に教えている時のこと。
説明している時は、理解できていなかったようなので、課題を与えて、自分で考えてみるように伝えた。
最近は、長々と説明するよりも、「習うより慣れろ」の教育方針で、極力説明する範囲を狭くして、あとは内容が理解できているかを課題を与えて自分で考えてもらうようにしている。
人の記憶というのは短期記憶を引き出すことを繰り返すことで長期記憶に変わっていく。長々と説明しても、短期記憶の限界を超えてしまうと、忘れてしまうので、短期記憶の範囲内で説明を行って、そしていくつもの課題を行うことで短期記憶が引き出される。わからない部分だけを説明して、課題を繰り返すことで長期記憶に変わるようにしている。
このため、自分で考えてプログラミングする回数を増やすことが重要になる。
課題は説明したこと以外は知らなくてもできるように考えていて、そのことは当然、伝えた上で取り組んでもらっている。
しかし中には過程よりも、とにかく課題をクリアすることが重要だと考えるモノもいる。
説明していないコードを使っている
暫くすると出来ましたと言ってきた。
プログラムのコードを見ると、説明していない条件分岐(IF文)が使われている。
条件分岐というのは、プログラムの中で条件に一致しているかどうか?で処理を変えるというものになる。
おかしいなと思ったので、どういうプログラムなのかを説明してもらった。
条件分岐の個所で説明ができなくなるのと予想していたが、最初から説明できない。
ここ、まだ説明していないよね?と条件分岐の個所を指さすと、インターネットで検索してコピペしましたと、申し訳なさそうな感じで答えた。
きっと、暫く考えてみたが、分からない点をインターネットで検索していると、偶々、同じ課題のコードが見つかったので、それをコピペして完成させてしまったのだろう。
これは、初心者に限ったことではなく何年か経験を積んだ人でも、自分で考えずにインターネットで検索して見つけたコードをそのまま貼り付けて使う人は意外と多い。
プログラミングのことが理解できていて、更に見つけたコードの内容が理解できるのであればまだ良いが、そうでなければ機械が膨大なデータから似たような正解を検索してくる処理と違いがなくなる。
自分で考えるとは?
自分で考えないと意味がないことを伝えると、自分で考えるというのはどういうことか?と質問してきた者も過去にはいた。
最初は誰でも何も知らない。
知らないことは、いくら考えても答えはでない。
だから教えてもらったり、調べて知識を増やすことが学習ではないのか?
考えると言っても知識がなければできない。
だから、自分で考えるというのは、どういうことなのかわからないという。
その時は言いたいことは、わからないと思いつつも、教えてもらったり、調べることが考えることには思っていなかった。
人間の「考える」というのは、知識・経験を組み合わせる行為だと思う。
ところが、学校では「知識」を得るばかりで、「経験」をすることが、ほとんどない。
小学校の頃はまだ、「経験」することもあったが、中学校を過ぎると、とにかく「知識を記憶」することばかりで、覚えたことを、いかに思い出せるようにするのか?が最重要課題になっていく。
「なぜ?」という疑問を持つことは時間の無駄で、そんなことを考えている時間があるなら公式を覚えたり、過去問をやっておけって感じだった。
このため、日本では受験や資格を取る際の勉強法というのは、とにかく記憶して、たくさんの「過去問」を消化するというものになる。
機械学習をする人
これは、機械学習(ディープラーニング等)のロジックに共通する部分があるのではないだろうか?
たくさんの過去問を用意して、人間は問題と答えの組み合わせを覚えていく。
過去問と答えをデーターとして蓄積させていくことで問題と回答の組み合わせから特徴を抽出して答えを導きだせるようになる。
そうすると似たような問題であれば、答えることができるようになる。
これは、まさに機械学習そのものではないだろうか?
機械学習は、チェスの世界チャンピオンにも勝ってしまうレベルにまで到達し、更には将棋のプロ棋士、コンピュータでは勝てないだろうと言われていた囲碁でもプロ棋士に勝つようになっている。
考えるとは何か?と質問した者にとって学ぶというのは機械学習と同じという認識なのかもしれない。
機械学習は何も知らないコンピュータにチェス、将棋、囲碁を学習させ、世界のトップを越えた実績がある。
この実績は無視できないように思う。
課題についてネットで調べるというのも、機械学習でいうとこのデータを準備している段階だと考えられる。
考えることは経験や知識を組み合わせる行為だというならネットで調べる行為は知識を取り込んでいることであり、繰り返すことで機械学習と同じ効果が得られる可能性は十分にある。
そうすると、ネットで調べる行為は考えていないと言い切ることはできなくなる。
このため、学習法は人それぞれであり、機械学習のような方法も受け入れるべきだと思うようになった。
機械学習は、コンピューターに最適な方法なので、人間が真似してもコンピューターに勝てるはずがない。
しかし、人間にはコンピューターにはない既存のモノから全く関係ないことを発想するという力がある。
人が機械学習を行うことで、コンピューターには、まだできない別の発想が生まれるかもしれない。
人が不要になる時代
しかし、プログラミングがネット検索で調べてコピペして成り立つなら機械学習で簡単なプログラミングであれば、できてしまうのではないだろうか?
人はクリエイティブな仕事をして、機械はルーティン作業と言われている。
人が今後、機械学習に依存していけば、人でないと行えないというクリエイティブな仕事でさえ機械が行えるものが増えていく。
そうすると、人でないと行えないということは凄く限られていく。
将来的には、今とは逆にクリエイティブな仕事は機械に任せて人はルーティン作業ということになるのかもしれない。