ハモ先生!ハモ先生は機械学習って詳しい?
え!い、いやぁ~実はよく分からないんだよね
よし、じゃあ挫折しない初心者向けのアプローチを教えてあげよう!
ここ数年、ディープラーニング(深層学習)や機械学習という言葉がトレンドになっています。機械学習やディープラーニングって、なんだかカッコいいですよね?さらに、お給料も良いようですので、学生さんには大人気の就職先になりそうです。
とはいえ、情報科学分野の学生さんや研究者だったり、実際にプログラムを組んでいるプログラマーの皆さん以外は、「はて?よく分からないぞ?」という状況なのではないでしょうか。
僕も未経験ではありますが、近年、僕の取り扱う仕事(発明の権利化とか)で触れる機会が多くなり、いよいよ「よく分かりません!」では逃げられなくなってきました。
逃げられないなら、覚悟を決めて身に着けるしかありません。でも、本を読んだだけでは身に付きませんし、すぐに忘れてしまいます(というか何度もそれで挫折しました)
ということで、この1か月間の間に僕が取り組んだ「挫折しない」勉強法について、シェアしていければと思います。やっていることは、かなり体育会系のノリです。
筆者のレベルについて
この記事を書いている時点の僕のレベルをお伝えします。
機械学習について何も知らない状態の僕が、「機械学習の入門書を読んで、そこに書いてあるソースコードを、Google検索で意味を調べながらポチポチ打って、『あぁ、こんなことができるんだな』と理解し始めている」という状況です。ソースコードを打つことだけは速くなってきました。
つまり、まだまだ自分で自作のプログラムをゼロから組めるレベルではなく、機械学習のツールの使い方を演習を通じて学んでいる程度です。
「なんだ、この程度か~」
という声が聞こえてきそうですが、はい、この程度です^^;
とはいえ、プログラムを学ぶ初心者が挫折するのは、だいたいプログラムの入門書を読んだあたりですから、実際にプログラム言語を使って演習問題を進めている段階までこれたのは、嬉しいです。
未学習者から初心者までのタイムライン
まずは、お盆休みをきっかけに、この1か月間で学んだことをお伝えしたいと思います。カッコつけても仕方ないので、Twitterのタイムラインを眺めながら、いつ、どんなことをやっていたのかご覧ください。アラフォーサラリーマンがどのくらいもがけば機械学習やスクレイピングの入り口にたどり着けるのか、逆にいうと、どの程度の労力でたどり着けるのかを見てほしいです。
悩みまくって、挫折しまくって、分かりやすい教材を探して、ようやく初心者の領域にたどり着いたアラフォーの足跡です。子供たちが寝静まってからと、出勤前の数時間を利用して、オンライン講義を中心に始めました。
メチャクチャもがいてます!アラフォーサラリーマン、必死です!
うわ~。メチャクチャもがいてるね、ハモ先生
もうね、プライドなんてなんもなく、ガムシャラにやってたよ~。
アラフォーハモちゃん全力だった^^;
こうやってみると、独学でもやれるって嬉しくなるね。
挫折しない学習戦略について
タイムラインはさておき、今度はどんな学習戦略をもっていたのか、お伝えしたいと思います。
やりたいことのイメージとできることのズレを確認
最近、「ディープラーニング(深層学習)」や「機械学習」や「スクレイピング」といった言葉が独り歩きしています。
「なんかわからないけどディープラーニングがカッコいいから勉強したい!」
そんな理由で初めても良いのですが、サラリーマンには時間がありません(自由なお金もありませんが)。
時間のない皆さんにとって、自分のやりたいことと、実際にできることのイメージにズレがないかを、学び始める前に認識しておくことが重要です。
「スクレイピング(ネットの情報から欲しい情報を取得する方法)」はGoogle検索で調べてもらえばすぐに概要が分かります。試しにググってみてください。様々なサイトで似たようなソースコードが公開されています。
一方、「機械学習」は、統計学・物理学・情報科学といった専門的な内容が盛沢山ですから、適当なことを言っている人も多いです。そんなときは専門家が書いた、素人でもわかる(数学の式が出てこない)入門書が最適です。
ということで、僕が図書館や書店に侵入して、「あ、この本分かりやすい!(というか他の本全部アウトやん・・・)」というものを見つけましたので、紹介します。
この本は、白雪姫の王女様と鏡のやり取りのストーリーに沿って、機械学習でどんなことができるのか、機械の内部でどんな処理をやっているのか、その処理にはどんなデータが必要なのか、というのを大学で学ぶ数学の知識が無い人向けに、分かりやすく(数式を省いて)説明しています。
専門知識は省くけれど、内容は良く練られた素晴らしい本です。「機械学習を学べば、こんなことができるようになるんだな」という、目標のイメージと、そのためにどんなことを勉強すればいいのかが分かるようになります。
僕はこの本を風呂や仕事の休憩時間に読みながら、子供が寝静まった後にプログラム言語の学習をしていました。ゴールのイメージを持たないと、勉強って続かないんですよね。
この本には続編がありまして、こちらも時間があれば読んでみたいと思います。シリーズの3つ目ということで、好評なのでしょう。分かりやすいですしね。
ハモ先生!ズルしてるじゃんか。
分かりやすい教材を選ぶのはズルくないよ!
ということで、機械学習の概要が「なんとなくわかった」後は、具体的な勉強に移ります。
でも、何を、どうやって勉強するのが良いのでしょう?
あまり選択肢を広げても悩むのは明らかですから、僕が選んだものを紹介していきます。
目的に合ったプログラム言語を選ぶ
僕が選んだのはPythonという言語です。
選んだ基準は以下のとおりです。困ったときにヒントになるものが多いというが一番かもしれません。
実際、図書館で最近発行された書籍を調べたところ、ダントツでPython関連のものが多かったです。
時代のトレンドに乗る方が勉強しやすいんだね。
テストではないんだし、ヒントは多い方が良いよ。
「丁寧すぎるくらい丁寧に説明された」教材を選ぶ
さて、言語が決まりました。今度は「何で(どんなコンテンツで)」学ぶかを考えましょう。
正直なところ「本だけを頼りに」という勉強をやろうとしても、すぐに挫折してしまいます。
そう思って選んだのが、これからお伝えする内容です。
動画で学ぶ
僕の学習の軸は、動画です。
なんで動画?と思うかもしれませんが、本だけだと眠くなるし、目で追うよりも耳で聞くほうが理解しやすいのが理由です。
動画コンテンツも色々と比較したのですが、「見やすさ」・「無料でお試しできる」・「有料プランも1か月1,000円かからない」・「パソコンにPythonの環境作らなくてもWEBでプログラムを実行できる」という点で、paiza ラーニング(パイザラーニング)がお勧めです。
paizaラーニングで一番ありがたかったのは、無料でPython入門編を受けられることです。
僕はお盆休みを含めて2週間程で全部受けました。1日2~3時間ジックリ取り組んでの盛沢山な内容です。この入門編の動画コンテンツのレクチャーが丁寧だったため、入門編終了後に有料プランへ変更しました。
独学のための方法はpaizaラーニング以外にもありますし、様々な選択肢を比較するサイトも多数存在しますので、検討してみたい方はこちらのサイト等をご覧になってください。よくまとまった素晴らしい記事です。
ただ、選ぶのもしんどいという方が多いと思いますので、「選び疲れ」するくらいなら「paizaラーニング」をさっさと始めるのが良いと思います。細かい選択肢で悩むくらいならさっさと始めてしまう、というのも時間のないサラリーマンには重要な要素です。
やる前に疲れるのは「初心者あるある」だよね。
「さっさと始めなさい」というのも本質なんだよなぁ。
本を選ぶ
さて、Python入門編でプログラム言語の基礎を勉強したら、次はどうするかです。
というのは、paizaラーニングはPythonだけでなく周辺技術の概要についてもコンテンツが豊富で、僕自身満足しているのですが、機械学習については、あまり細かいレクチャーはありませんし、解説も丁寧とは言えない気がします。機械学習以外の周辺技術については豊富なコンテンツがあり、解説も丁寧ですから、悪目立ちしているだけかもしれませんが。
そこで、機械学習については、初心者でも理解できる書籍を探す必要があります。
もちろんブログを見てわかるのなら良いのですが、「初心者向け」を前提とした親切な本を探す方が、じっくり取り組めると思いました。
「機械学習入門」というテーマの本を10冊程度読んでみると、実際には全然初心者向けではないものばかりでした。図書館で借りたり書店で立ち読みしたりして「これなら僕でもググらずに読めるし、解説を読みながらならソースコードも打てるぞ!」とたどり着いた本を紹介します。
この本の良いところは、難しい理論を省略しつつ、実際に打つソースコードを紹介し、ソースコードの意味を1行ずつ丁寧に説明しているところです。理論を知ったからといって、プログラムが打てるようになるわけではないことを筆者自身がよく分かっているのだろうなと思いました。
なお、スクレイピングの学習をするとき一番分かりやすかったのはこの本です。
この本は、とにかく親切です。解説が丁寧なため、読んで、理解して、ソースコードを打つ、という学習にストレスが全くかかりませんでした。おかげで他の教材を学習するときに、「なんか不親切だなぁ」と要求レベルが上がってしまいました。
「入門」といっても色々あったよ。
初心者のレベルを誤解したまま書いた本が多いんだよなぁ。
「伝える努力」を放棄した本も結構あるよね。
教材代はケチらないがスクールにはお金をかけ過ぎない
気を付けていただきたいのは、初めから教材にお金をかけ過ぎないことです。
もちろん、必要な本は買うべきですし、あるいは図書館で借りるべきです。
僕が言いたいのは、「高額なスクール」をはじめから利用するのは避けた方が良いということです。
スクールのスタイルに合う合わないが必ず出ますし、「通い続けられない」ということも織り込んで学習を進める方が自然だからです。
ということで、「今すぐに、何としてでも機械学習を極めるんだ!」という方以外は、「継続できる」ことを前提として、学習のコストを抑えておくのが良いかと思います。
お金を払っても、学習するのは結局自分だからね。
(ハモ先生お小遣いすくないからなぁ・・・)
初心者が必ず守ること
さて、本も動画コンテンツも揃ったところで、初心者がやってはいけないことをいくつか挙げておきます。
ソースコードを自分で打つべし
動画の講義を聴いて、本を読んで理解した気になるだけではたりません。
演習(ソースコードを打ってエラーを修正する)を必ずやりましょう。できたソースコードを自分なりにいじって遊んでみましょう。
オリジナリティあふれる作品ができなくてもいいです。でも、ソースコードを打たない人になってはいけません。打たない人は、いつまでも打てない人で、こういう人が挫折します。
というのは僕の意見でもなんでもないのですが、プログラムにアレルギーを持っている人は大体ソースコードを打ちたくないと思っているので、アレルギー解消のためにもソースコードを打ちまくるのが良いそうです。
初心者の頃は、修行だと思ってソースコードを打ちまくる。
ほんと手を動かさない人が多いよね。
本や動画コンテンツを読み飛ばさない
「ソースコードを打たない」人も厄介ですが、読み飛ばすことも初心者にとってはよろしくありません。
読み飛ばすことが多くなると、穴に開いたチーズのような中途半端な知識・経験しか残りません。
一時ラクができるからといって油断すると、近いうちに足元をすくわれることになります。
初心者は丁寧に進めることを意識しなきゃいけないんだね。
スルーは癖になるから、
初心者のうちはやめた方がいいよ。
完璧・暗記を目指さない
学習項目を読み飛ばさないようにする一方、完璧を目指しすぎてはいけません。というのが、プロ(友人)の意見です。
完璧に暗記するのが良くない、というよりも、ググれば必要な情報にアクセスできるため、完璧に暗記する意味はあまりありません。
さらに暗記には時間がかかりますし、暗記必須とすると効率も下がります。
ですから、一度ソースコードを打ち、意味を理解したなら、暗記に時間をかけずにさっさと次の項目の学習へ移りましょう。
まとめ
以上、1か月にわたって学習経験無しの状態から、初心者に至った僕の経験談をお伝えしました。
機械学習でできることをザックリ学び、動画を軸にプログラム言語のPythonや周辺技術を学び、解説が丁寧な本を頼りに機械学習やスクレイピングの演習を進める、というのが僕には合っていた気がします。
人の数だけ様々なアプローチがあるかとは思いますが、学習のやり方の1例としてご覧いただけると嬉しいです。
コメント