3ヶ月前から機械学習の勉強を始めてみました。
仕事で使うわけでもなく、誰かに強制されたわけでもなく、IT企業で働いているわけでもないのですが、
ブログの分析や、将来何かアプリを作るときに使いたいなー、と思ったことがきっかけです。
それで意気込んでオライリーの本を買ってみたはいいものの、書いてあることがさっぱりわからない。
文章を読んでも何がなんだかわからず、本を開いても文字を追うだけで、わからなすぎて眠くなってしまう。
周りで機械学習をやっている人なんていないから、誰かに聞くこともできない。
やべーどうしよう!
全くわからん!!
...と、ものすごく苦労しながら勉強してきたのですが、最近やっと、やっと...本に書いてあることが理解できるようになってきました。
レベル0からレベル1に上がったように感じています。
そして改めて、何か新しいことを始めるときに一番難しいのは
「レベルを0から1に上げること」
だと思うのです。
「全くわからない状態」
から、
「ちょっとわかり始めるまで」
が一番つらい。
中国語とかも同じです。
僕は今まで何度も
「中国語やろう」
と企んできましたが、レベル1に到達できずに挫折してきました。
レベル1に達しないで辞めてしまうと、何も残りません。
頭の中の知識が断片的で、点と点がつながらないまま消えていくからです。
それでこの記事では新しいことを学ぶのに散々遠回りしてきた僕が、
レベル0からレベル1に上げるまでにやってきたこと、
あるいは、こうしたらもっとよかったな、と思っていたことをまとめます。
できるだけ他の分野の学習にも役に立つように書きます。
何か新しいことを始めたい読者の方の参考になればいいなと。
機械学習の本を初めて手にとったとき、自分が感じたのは
「何がわからないのかもわからない」
ということでした。
何がわからないのかわからない
とりあえず機械学習の例で始めますが、
「機械学習を勉強してみよう」
と考えたときの僕の頭の中はこんな感じでした。
からっぽ。
PythonとRの違いもわからない。
検定も知らない。
標準偏差と分散の定義もよくわからない。
恥ずかしながら、「自分が何がわからないのかわからない」という状態でした。
新しいことを始めるときに誰もがぶつかる壁です。
これが、頭の中に「知識の点」が存在しない状態です。
何を学べばいいのかわからないときは、先人の知恵に頼る
何がわからないのかがわからない状態だと、何を勉強すればいいのかもわかりません。
こういうとき、僕は闇雲に本を買っていたのですが、結局本を読んでもわからないんだから仕方ありません。
そういうときは、先人に頼りましょう。
ネットで
「XXXX 勉強方法」
とか、
「XXXX 入門」
とか検索しまくって、何を勉強すればいいのかを先人に学ぶのです。
それも一つのサイトだけでなく、複数検索して情報をかき集めます。
「まずは勉強するべきことを把握するために時間を使う」というライフハックを、もっと早くやっておけばよかったと後悔しました。
全体像が全くわからないまま闇雲に本を買って、知識の森に迷い込んで苦しんだからです。
まず地図を手に入れましょう。
信頼できる人から教えてもらうことができれば一番いいのですが、独学でやるならインターネットで師匠を見つけるしかありません。
まずは
「これから学ぼうとしている分野にはどのようなものがあるのか」
を調べ、全体像を掴み、
「何をどうやって学んでいくか」
のスケジュールを立てる必要があります。
ものすごく基礎から学ぶ
何を学ぶべきかの地図ができたら、次は基礎を固めます。
「何かを学ぶには、実践から学ぶのが一番早い」
とはよく言われるのですが、最低限の基礎がないと、
どうでもいいことをイチイチ検索しながら進めるハメになり、非常に効率が悪くなります。
とりあえず軽めに基礎を固めて、それから実践で使ってみて、また基礎に戻るのがいいと思います。
ちなみに僕は大量の「マンガでわかる〜」シリーズから始めてみました(笑)
基礎学習にある程度時間を費やしてやっと、知識の粒のようなものができてきます。
しつこく繰り返す
よっぽどの天才じゃない限り、繰り返しが大事です。
先ほどは「基礎を学んで知識の粒を身に付ける」と書きましたが、
繰り返すことで理解が深まります。
繰り返しによって、ぼんやりしていた知識がくっきりと明確になってくるイメージです。
逆に言うと、繰り返さなければ学んだことはだんだん消えていきます。
仕事で使う場合は無意識に何度も繰り返すことができるのでいいのですが、そうでない場合は意識的に反復することが大切です。
手を動かしながら学ぶ
本を読むだけでは知識としては理解できても腹には落ちてこないでしょう。
手を動かして、実際に使ってみましょう。
説明書をいくら読んでも道具は使えるようになりません。
自分で使ってみないと。
実際に使い、「あれ?」と思ったところは検索して調べ、
調べてわからないところはまた基礎の本に立ち戻り、また使ってみる...
というのを続けていくうちに、それぞれの知識がはっきりとした「点」になってきます。
身に付けた基礎を自分で考えて活用する
「点」となる知識を身に付けたら、次は自分で応用して色々と使い回してみるのが大事です。
知識を道具として使っていくうちに、点と点のつながりが見えてきます。
もう一度体系的に、良書を一気に復習するのもいいかもしれません。
それまで断片的だった「点」と「点」がつながって、体系的な「スキル」として自分の身になってくるのがこの段階かと思っています。
ちなみに今の自分は「機械学習」に関しては、まだ「点」と「点」がつながった感じはしないかな、というのが正直なところです。
身に付けたスキルで世の中に価値を生み出す
結局、お勉強するだけなら資格コレクターと大差ありません。
知識を使って、世の中のために、社会のために、あるいは自分のために、何かを生み出さなければいけません。
ある程度基礎が身に付いたら、次は会社の業務で使ってみるとか、自分で何かを作って発表するとか、
「本から出た先の世界」
で知識を活かしていく必要があります。
そして、「本の先の世界」で知識を活用することで、レベル1からレベル2、レベル20......とさらにレベルアップしていけるのだと思います。
どんなに知識を詰め込んでも、覚えるだけならwikipediaに勝てません。
ある程度まで知識を仕入れたら、世の中のために何か生み出さなければいけない。
僕たちは知識を集めるためではなく、価値を生み出すために学ぶのだから。
できれば短期間に一気に集中して学習したほうがいい
やっぱり新しいこと身に付けるには、短期的に一気に集中して勉強するのがいいです。
というのも、新しい知識は忘れやすいため、頑張って「点」を作ってもすぐに頭の中から失われてしまうからです。
一気に学んで、一気に「使える」レベルまで持っていくのが理想的です。
が、会社員だとなかなか思うように時間も取れず、集中学習は難しいのが現実でしょう。
そういうときは、この記事で書いたようなステップを地道に踏んで、少しずつ「知識」を「スキル」に変えていく努力をするのがいいと思います。
僕もまだまだです。
レベル1からレベル99まで、どこまでいけるかわかりませんが、コツコツやっていきたいですね。