機械学習の独学について考えてみる?覚えておくべき6つのこと

最終更新日:

著者のDaniel Bourke氏は、オーストラリアで機械学習エンジニアとして活躍し、AI技術に関するYouTubeチャンネルも運営しています。同氏がMediumに投稿した記事では、機械学習エンジニアを目指す初学者の独学についてのアドバイスが論じられています。

学生時代に健康科学と栄養学を学び、フィットネスコーチやUberドライバー、さらにはAppleストアのジーニアス(技術対応専門スタッフ)の経験のある異例とも言える職歴をもつ同氏は、自分の体験を生かして全くの畑違いから機械学習エンジニアを目指す初学者が独学するにあたっての6つの心構えを説きます。それらの見出しを列挙すると、以下のようになります。

  • Pythonか何かの基礎を身につける(3~4ヶ月で)
  • 準備が出来てなくても着手すること
  • 目の前に多くのものがあるが、散らかっているものは片付けよう
  • 研究は不可欠だが、それを使えないなら無益だ。
  • 毎日少しずつやること
  • 何かを知らないからといって、自分を責めるな

データサイエンスの博士号を取得してはいない同氏のアドバイスは、豊富な専門知識に裏打ちされているわけではありません。しかし、「もしわたしがもう一度独学を始めるなら」知識ゼロだった自分に伝えるつもりで語った内容は、初学者を大いに勇気づけるものとなっています。
ちなみに、Mediumにはこの翻訳記事のようなAI業界志望者にアドバイスを贈る「AIキャリア記事」とでも総称できる記事が多数公開されています。AINOW翻訳記事でも、以下のようないつくかのAIキャリア記事を紹介してきました。

以上のような海外初のAIキャリア記事は、すべての内容が日本でも通用するわけではありませんが、AI業界志望者に何らかの指針を与えてくれるのではないでしょうか。

なお、以下の記事本文はDaniel Bourke氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。

わたしは独学で機械学習エンジニアになりました(※原註1)。もしわたしがもう一度独学を始めるなら、そんなわたしに伝えたいことを以下に記します。

(※原註1)わたしが成しえたすべての仕事と学んだすべてのことは、機械学習の講座を作り、自分たちが学んだことをシェアしてくれた素晴らしいヒトビトなしにはできなかったことである。

わたしが独学している時のほとんどを過ごす場所は、画像のようなところだ。画像出典:Daniel Bourke on YouTube

・・・

より視覚的に学習したい?それならYouTubeにこの記事のビデオバージョンがあります。

・・・

ある日、わたしたちはオーストラリアでロボット工学に関するミーティングを主催した。そして、質問タイムとなった。

あるヒトがこう質問した。

「まったくの畑違いから人工知能と機械学習の世界に入っていくにはどうしたらいいでしょうか」

(ミーティングの主催者のひとりである)ニックがわたしの名前を呼んだ。

「ダン・バークはどこにいる?」

わたしはちょうど舞台裏にいて(ミーティングに参加していた)アレックスと話していた。呼ばれたので歩き出て行った。

「そう、彼です」とニックは続けて言った。「ダンは健康科学を勉強していて、栄養学を研究していました。それからUberのドライバーをやり、機械学習のオンライン学習を経て今は機械学習エンジニアとしてマックス・カールセンで働きはじめて数年が経ちます。」

ニックはマックス・カールセンのCEOであり、共同設立者でもあった。この会社はブリスベンにあるテック系企業だ。

わたしは立ち上がり、ニックの話を聞き続けた。

「ダンは機械学習エンジニアになるまでの道のりをオンライン資料で公開していて、もし君が何か質問があったら、彼は喜んで君の助けとなることを約束するよ。」

その後、質疑応答が終わったのでわたしはミーティング後の会食に戻った。

そこに(ミーティングに参加していた)アンキットがやって来た。彼はわたしに取り組んでいるプロジェクトについて話してくれた。そのプロジェクトは機械学習が使えるようになるオンライン講座を作るというものなのだが、彼は学生がより良く学べるように色々と試しその成果を理解しようとしていた。その試みではオンライン講座のポータル画面で講座の出席率と学習に費やした時間を結び付けたり、さらにほかのことも試していた。講座の諸々の結果と相互作用できるようにウェブポータル画面を作りこんでいたのだ。

アンキットの仕事はわたしにインスピレーションを与えた。彼の仕事をもっと良くしたいとわたしに思わせてくれたのだ。

アンキットと話した後、さらに数人のヒトがわたしのところに来て、どうしたら機械学習の業界に入れるかについて質問してきた。彼らはみんな機械学習とは違う業界にいた。

こうした質問に答えるのは難しかった。わたし自身、まだ機械学習エンジニアとしては入門者だとわかっていたからだ。

しかし、ベストなメンターというのは、相談者よりキャリアが1、2年先にいるヒトである。そうしたヒトは相談者がまさに向かおうとするところを通ってきたばかりなのだ。体験したことも時間が経つにつれてその印象が薄れ、その体験についてのアドバイスもぼんやりしたものとなる。アドバイスはそれが新鮮な時に欲しいものである。

わたしの兄弟もまさに機械学習の業界に入ろうとしている。そんなわけで、わたしがわが兄弟に言っていること(そして、それはわたしがもしもう一度機械学習の世界に入ろうとするならば、私自身に言いたいこと)を以下に示したい。

A) Pythonか何かの基礎を身につける(3~4ヶ月で)

習得するプログラミング言語は、実のところ、何であっても構わない。R、Java、Pythonのどれであっても良いのだ。重要なのは、習得したいプログラミング言語をひとつ決めたら、それの勉強を続けることだ。

もし勉強を始めたら、(例えば)Pythonを選んで間違ってばかりなのでプログラミング学習は難しいと思うだろう。

そうは言っても、もし実践的な機械学習の現場に仲間入りしたいのならば、コーディングは必須である。

まずはオンラインのプログラミング基礎講座を選んで、それを2、3ヶ月はやり通そう。もしその基礎講座がプログラミング学習とデータサイエンスを関連付けているならば、ボーナスポイントがもらえるだろう。DataCampは、そんなボーナスポイントがもらえるので非常によい。

プログラミング言語の習得は時に難しく感じるだろう。しかし、その難しさこそがポイントなのだ。プログラミング言語の習得とは母国語とは違う言語を学ぶことに似ており、また同時に違う考え方を学ぶことでもあるのだ。

しかし、そんなプログラミング言語習得の体験は、みんなやってきたはずだ。3歳の頃を覚えているだろうか。覚えているヒトはいないだろう。しかし、3歳の時には周りのヒトはみんな言葉を使っており、そんな言葉は聞いたこともなかっただろう。そんな状況が続いた後に、3歳の子供は言葉を使えるようになるのだ。

B) 準備が出来てなくても着手すること

学んだことはできるだけ早く使ってみること。

どんなに数多くの講座を修了したとしても、100%準備が出来るということは決してない。

力量がついた証が欲しくて、もっと講座を修了したいという誘惑に負けないこと。

以上のことこそ、もしわたしがもう一度初心者として機械学習の世界に挑戦するならば、改めたいと思うことだ。

まず自分ひとりで続けられそうなプロジェクトを見つけて、そのプロジェクトから間違いを通して学ぶのだ。

再び3歳の頃を思い出してみよう。3歳の頃はたった3語話すだけでも、間違いだらけだっただろう。構文構造もなく、文法もない。すべてはそういった間違いだらけのところから始まるのだ。

C) 目の前に多くのものがあるが、散らかっているものは片付けよう

目の前には多くの講座がある。そのすべてが素晴らしいものだ。

そんな中から悪いものを見つけるのは難しい。

しかし、こんな状況にこそ問題がある。というのも、講座があまりに多いと、それらからひとつ選ぶのが難しいからだ。この講座選択にまつわる罠こそが、入門者を捕らえてしまうである。

こうした罠に対処すべく、わたしは自分のAI習得度の指標を作った(※註1)。これは、わたしがAIを習得した道のりを跡付けたものでもある。

もしお望みならば、この指標をコピーすることもできる。しかし、ぜひとも数日かけて自分自身で講座について調べてみて、自分にとってベストだと思うものを見つけることをお薦めする。

頭を上げてわたしの周りを見渡すと、(機械学習エンジニアとして働いている)わたしが日々行っていることともっとも一致していると思われる3つの資料がある。それらは機械学習の実践についての本(※註2)、fastai の機械学習オンライン講座、そしてCourseraのPythonのデータサイエンスへの応用についてのオンライン講座だ。

Pythonの実践練習を数ヶ月行った後の学習のために、以上の3つの資料をブックマークすると良いだろう。

(※註1)リンク先にはDaniel Bourke氏がMediumに投稿した記事『わたし自身が作った人工知能習得の指標』が設定されており、その記事には機械学習の習得に役立つオンライン講座や書籍に関する資料の一覧(ただし英語教材)が掲載されている。
(※註2)リンク先に設定された書籍は、オライリー・ジャパンから『scikit-learnとTensorFlowによる実践機械学習』として翻訳書が出版されている。

D)研究は不可欠だが、それを使えないなら無益だ。

機械学習の勉強を始めると、新しい機械学習の方法論に関する記事や論文を毎日のように見ることになるだろう。

それらは無視してよい。

そんな最新情報を全部フォローする方法などないし、そんな情報は基礎を築くことの妨げにしかならない。

最良の機械学習技法のほとんどは、発明されてから数十年以上経過したものだ。それにコンピュータの演算能力と利用可能なデータは日々増加して、機械学習をめぐる状況は変化している。

新しいことに気を取られないことだ。

習得したいプログラミング言語をひとつ決めたら、まずはそれの勉強を続けること。それから、取り組むプロジェクトの要求に合わせて知識を拡張していこう。

E)毎日少しずつやること

3歳の頃、ヒトはみな機械学習だった(機械学習者と言うべきか?)。

3歳頃から数年をかけて、ヒトはまったく話せないところからすでに数十年間話しているヒトビトと会話するようになるのだ。

しかし、どうやって?

なぜなら、3歳児は毎日すこしずつ練習するからだ。

3歳児の言語学習には、複利が効く。

毎日1%の上達 = 1年後には3700%の上達

もし練習する日が1日なくても、問題ない。人生にはいろいろある。またやり直せばよいのだ。

機械学習の勉強を始めて程なくして、データの言語についても話し始めるだろう。

F)何かを知らないからといって、自分を責めるな

「レコメンデーションエンジンを構築したことは?」

「ありません」

「PoCとして取り組んでいるプロジェクトがあるんだ。それがわかると思う?」

「もちろん、わかります」

多くのヒトが、高校か大学を出た後は学習を止めるものと考えている。それは違う。

以上に引用した会話は、わたしがとある週に交わしたものだ。かつてのわたしはレコメンデーションエンジンを構築したことはなかった。しかし、今はもうしている。

過去にすでにやったことがあることで失敗したとしても、その失敗はそんなに悪くはない。失敗したとしても人生を歩き続けるものであり、自分の脚で歩いている時に自分を責めても仕方がない。人生にはいろいろなことが起こるのだ。歩き続けよう。

しかしながら、何か新しいことに挑戦して失敗することこそ、タフな経験なのだ。そんな経験は以前に決してしていないものだ。

機械学習を学ぶことは、こうした未体験の体験に似ている。

学習1年目:とにかく吸収。

学習2年目:以前よりよくわかっているが、もっと吸収したいと思っている。なぜなら、自分がいかに知らないかに気づいているからだ。

学習3年目:???(わたしはまだそこにはいない)

喜んで吸収するようになろう。

何かを知らないことで自分を責めて、一体どのくらい学ぶことの助けとなるのか?

ゼロだ。まったく助けにならない。

何か新しいことを学ぶには時間がかかるのだ。学びにおいては、毎日が初日だ。

学習は線形的ではない。

(※註3)「学習は線形的ではない」というキャプションが付けられた上の画像は、学習の成果は学習時間に比例するような単純な経過をたどるものではなく(画像左の「想定された学習曲線」のグラフ)、停滞あるいはやり直しを経ながらも突然進歩したりする予期せぬ経過をたどること(画像右の「実際の学習曲線」のグラフ)を視覚的に説明している。予期せぬ経過をたどるという意味で、学びは「毎日が初日」なのだ。

3歳の時、言葉を知らないことに対してどんなリアクションをしただろうか。

知らない単語に対して、3歳児は笑うだろう。そして手を振り、ほんの少しのあいだあたりをうろうろするだろう。

機械学習の習得も同じだ。ただ、3歳児とは違い、学習者は言葉が話せるというだけだ。

・・・

さらに質問がある?そんな時は、わたしのTwitterLinkedIn、あるいはYouTubeにあたってください。

この投稿は、もともとはQuoraにおける回答として公開しました。


原文
『Thinking of Self-Studying Machine Learning? Remind yourself of these 6 things』

著者
Daniel Bourke

翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)

編集
おざけん

無料メールマガジン登録

週1回、注目のAIニュースやイベント情報を
編集部がピックアップしてお届けしています。

こちらの規約にご同意のうえチェックしてください。

規約に同意する