アンドリュー・エン(Andrew Ng)氏は、英語圏で最も有名なオンライン講座サービスCourseraを設立してAI関連の講義を担当しているスタンフォード大学の教授です。同氏は、アメリカにおいて日本の松尾豊東京大学教授のような立ち位置にいると言えばわかりやすいでしょう。
研究論文の読み方と機械学習エンジニアのキャリア構築法についてアドバイスした同教授の講座に感銘を受けて、Ali Habib氏は聴講した講座をまとめる記事を執筆することを決意しました。まず研究論文の読み方は、以下のような3項目に集約されます。
- 読むべき論文をリストアップする。
- リストアップした論文から読みたいものを複数選んで、選んだ論文を並行して読む。
- 論文を隈なく読もうとはせずに、タイトルや要旨のような重要箇所だけを読む。
また、文字を読まずとも意味がかわる図表はとくに注意する一方で、数式は後回しでよいともアドバイスしています。
また機械学習エンジニアのキャリアを構築するにあたっては、様々な分野に関する基礎的な知識があると同時に特定の分野に関しては深い知識を持っている「T字型の知識ベース」を構築するのが望ましい、とアドバイスしています。また、企業のブランドにとらわれずに自分の成長に役立つチームやプロジェクトに参加することも強くすすめています。
本記事は機械学習エンジニア志望者はもちろんのこと、現役の機械学習エンジニアにとっても有益なアドバイスを提供しているのではないでしょうか。
なお、以下の記事本文はMohamed Ali Habib氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
このブログ記事はKDnuggets(※訳註1)の記事としても投稿されています。そして、2019年9月におけるもっとも人気のあった投稿のひとつとしてゴールデン・バッジを与えられました。
・・・
同サイトを創設したのは、コンピュータサイエンスに関するアメリカの学会「ACM(Association for Computing Machinery)」の分科会である「KDD:knowledge-discovery in databases:直訳すると(データベースからの知識発見)」の創設メンバーでもあるロシア出身のデータサイエンティストGregory Piatetsky-Shapiro氏である。
目次
序論:
このブログ記事を読んでいるということは、読者諸氏はアンドリュー・エン氏が何者であるかすでに知っていると思われる。同氏は人工知能分野のパイオニアのひとりなので、読者諸氏は機械学習に関するキャリアを構築する方法についての彼のアドバイスに興味があることだろう。
このブログ記事は、スタンフォード大学のYouTube講座である「CS230 ディープラーニング講座」に収録されているキャリアに関するアドバイス/研究論文の読み方についての講義を要約したものである。
非常に有益なオンライン講座なので、視聴して詳細を知ることをおすすめする。しかしながら、読者諸氏が視聴しているかどうかに関わらず、わたしはこの講座が皆の役に立つと考えた。そこで、この記事を書くことによって講座でおすすめしたいところを概説しようと思ったのだ。
手短にまとめると:以下の節で重要なところにスキップすると、次のようになる。
アンドリュー氏はふたつの主要な推奨事項を講座でシェアしている。とりわけ:
- 研究論文の読み方:同氏が使っているディープラーニングに関する新しいトピックを習得する時に研究論文を効率的に読む読書術
- 機械学習におけるキャリアを築く際のアドバイス
研究論文の読み方:
研究論文を読んで効率的かつ比較的早く学べるようにするには、どうしたらよいか。学術的文献を通して関心のある機械学習システム/プロジェクトの構築方法を学びたかったり、機械学習分野で最先端に居続けたかったり、より多くの知識を得たい、さらにはディープラーニング人材として自分を磨きたい場合には、以下のようなことをすべきである。
学術的文献から学習する際に、行うべきことのリストは以下の通りになる。
- 研究論文のリストを作成する:研究論文、Mediumの投稿記事、そしてあなたが持っているあらゆる文書や教材を含んだリストを作成することを試みる。
- リストをスキップして活用する:基本的には、研究論文を並行して読むべきである。つまり、同時に1本以上の論文に取り組もうとするのだ。具体的には、リストアップしたそれぞれの論文をすばやく流し読みして理解して、最後までは読まないようにする。だいたい10~20%くらい読む。この作業を行うだけでも、おそらくリストアップした手持ちの論文に関して高いレベルの理解を充分得られるだろう。その後、流し読みした論文のいくつかをふるい落として1本か2本の論文に絞り、それらを完全に読むのだ。
アンドリュー教授は、以上のような読書法に関して以下のようにも言及している。
(任意に選んだ分野、例えば会話認識に関して)読んだ研究論文の本数が5~20本 =>会話認識システムを実装するのに必要な知識を得られるだろうが、この分野を研究したり最先端を知るには充分ではない。
読んだ研究論文の本数が50~100本 =>(例えば会話認識のような)特定の分野の応用に関して充分な理解が得られるだろう。
1本の論文をどのように読むのか?
研究論文を読むには最初から最後の語句まで読もうとしてはならない。代わりに何度か論文を読み飛ばすのだ。そうした読み飛ばしの方法が以下である。
- 論文タイトル、要旨(abstract)と図表を読む:タイトルと要旨を読めばカギとなるネットワークアーキテクチャの図表が見つかり、実験の箇所を読めば論文に書かれた概念の大意がわかるだろう。ディープラーニング関連の論文では、詳しく文字を読まなくてもわかる論文全体を要約した図表がひとつかふたつ記載されたものが数多くある。
- 序論(introduction)+結論+図表+残りの順に流し読みする:序論、結論、そして要旨は、論文の執筆者が査読者に対して当該の論文の公開を認めるべきである理由を説明するために、注意深く自分たちの仕事をまとめている箇所である。同様に(もし可能であれば)関連研究の箇所も流し読みすべきである。この箇所には論文執筆者の仕事に何らかのかたちで関係しているほかの論者による仕事をまとめるという目的があるからだ。さらに参考文献は論文を読むのに役立つかも知れないが、そうした参考文献にあまり慣れ親しんでいない場合、時としてそれらを理解するのが非常に難しいだろう。
- 論文は読むが、数学はスキップする。
- 論文全体を読む。しかし意味がわからないところはスキップする:素晴らしい研究というのは、わたしたちの知識や理解の限界線上において何かを発表しているものである。
アンドリュー教授はあなたが論文を読んでいる時(読んでいるものが影響力のあるものであっても)、思っていたより役に立たなかったり、あるいは意味がわからない箇所をいくつか見つけるだろうと説明している。それゆえ、もし論文を読んで意味がわからない箇所があっても(そういうことはまれではない)問題ないのであり、わからない箇所は最初は読み飛ばしても大丈夫なのだ。論文を完全に理解しようと思った時に、改めて時間をかけてわからない箇所を読むようにしよう。
論文を読む時は、以下のような質問に答えようとしてみよう。
- 著者(たち)は何をやり遂げようとしているのか
- 執筆目的に対するアプローチでカギとなる要素は何か
- 論文の内容を自分で使うことができるか
- 読んだ論文以外でフォローしたい参考文献はあったか
もし以上の質問に答えられるのであれば、おそらくあなたは論文をよく理解していることになるだろう。
もっと多くの論文を読むようになれば、以上の作業をもっと早く行えるようになる。というのも、多くの論文執筆者は論文執筆時に共通のフォーマットを活用しているからだ。
例えば、以下に引用する表は論文執筆者が画像認識のネットワークアーキテクチャを記述するために活用する共通フォーマットである。
タイトル | 論文の内容を反映したタイトルが望ましい。略語を用いないほうが専門外の読者にもわかりやすくなる。 |
---|---|
著者名 | 著者名はフルネームで書く。 |
所属 | 所属する組織名や研究所名を書く。 |
キーワード | 論文中で使用されているキーワードを4~6個列挙する。 |
要旨 | 論文の内容を簡潔にまとめた部分。原則的には1段落で書く。タイトルと要旨は論文の検索表示に大きく影響する。 |
本文 | 実験方法、実験結果、結論等から構成される。 |
本文はさらに以下のような部分から構成される。
序論 | 論文に対する先行研究に言及したうえで、論文を執筆した意図を明確にする。 |
---|---|
実験材料および方法 | 実験に用いた材料やその方法を記述する。AI関連の論文では、アーキテクチャを説明することが多い。 |
結果 | 実験した結果を記述する。AI関連論文では、ベンチマークスコアを記載することが多い。 |
考察 | 結果を解釈して、どのような意味を持つかを記述する。 |
結論 | 以上の内容をまとめたうえで、結果や考察から導かれる見解を述べる。 |
謝辞 | 協力者や協力してくれた組織名を列挙する。 |
参考文献 | 引用したり参考にした文献を列挙する。文献を引用する際は、引用の慣習にしたがう。 |
図表のキャプション | 本文の記述をまとめた図表で、本文中に挿入される。AI関連記事ではアーキテクチャ図やベンチマークのスコア一覧表が記載されることが多い。 |
論文を理解するのにどのくらい時間がかかるのか?
比較的新しい機械学習モデルを論じた論文で理解するのが相対的に簡単なものであれば、理解するのに1時間程度しか必要としないヒトがいてもめずらしくない。しかし、時として本当に理解するには3時間かそれ以上かかる論文と格闘することもあるかも知れない。
論文のソース:
オンライン上には素晴らしい論文ソースが数多くある。例えば、もしあなたが会話認識の分野における入門者であるならば、この分野における最重要論文をリストアップしたブログ記事は非常に役に立つだろう。
多くのヒトが、急速に進化するディープラーニングの最先端に追いつこうとしている。以下が、ディープラーニングの最先端をフォローするのに役立つところだ。
- Twitter:驚くべきことに、Twitterは何か新しいことを探している研究者にとって非常に重要な場所になりつつある。
- 機械学習に関するsubreddit(※訳註3)
- 重要な機械学習カンファレンス:NIPS/ICML/ICLR(※訳註4)
- 友だち:興味のある分野に関してコミュニティや友だちのグループを探して、興味深い研究論文をシェアしよう。
ICML(International Conference on Machine Learning:国際機械学習学会)とは、機械学習に関する国際学会。1980年にアメリカ・ピッツバーグで第1回会議を開催後、2020年にはオーストラリア・ウィーンで37回目の会議を開催する予定。
ICLR(International Conference on Learning Representations:表現学習国際学会)とは、表現学習(Representations Learning)に関する国際的な学会。表現学習は「特徴学習(Feature Learning)」とほぼ同義であり、データから特徴を抽出して何らかの認識処理を実行することである。それゆえ、同学会では画像認識、自然言語処理、音声認識に関する発表がある。2013年にアメリカのアリゾナ州スコッツデールで第1回会議が開催され、2020年にはエチオピアの首都アジスアベバで第8回会議を開催する予定。
論文における数学をより深く理解するには:
論文の数学的内容を白紙の状態から再構成してみよう。1回では出来ず何回か試すことになるだろうが、非常によい練習になる。
コーディングの実践:
- (もし見つけることができたら)論文に関するオープンソースコードをダウンロードして実行する。
- 白紙の状態からソースコードを実行してみる。もし実行に成功したならば、そのことはあなたが入手したソースコードのアルゴリズムを本当に理解した証しとなる。
より良くなるには:
学び続けてより良くなるのにもっとも重要なことは、集中的に学ぶよりも継続的に学ぶことである。来年1週間に2本ずつ論文を読むことは、短期間にすべての学習を詰め込むより良いことなのだ。
機械学習におけるキャリアを築くためのアドバイス
あなたのゴールが(大企業、スタートアップ、そして大学の教授職のような)機械学習で職を得ることかも知れないし、あるいは(おそらく博士課程のコースに進学して)さらに高度な卒業研究を行うことかも知れない。
あなたにとって重要な仕事に焦点を合わせ、役に立つ仕事をするための手段かつチャンスとして、あなたの職業を考えてみよう。
採用担当者は求職者に何を期待しているか?
- 機械学習のスキル
- 意味のある職歴:あなたが仕事のできる人材であることを示せるプロジェクト
成功する機械学習エンジニア、あるいは採用選考に強い求職者には非常に共通したパターンがある。それはT字型の知識ベースを習得していることだ。この知識ベースは、AIに関して様々に異なった多くのトピックを幅広く理解していると同時に、少なくともひとつの分野について非常に深く理解していることを意味する。
水平的な知識を構築するには:
様々な分野の基本的な知識を構築する非常に効率的な方法とは、講座を受講したり研究論文を読むことだ。
垂直的な知識を構築するには:
垂直的な知識はその知識に関連するプロジェクト、オープンソースへの貢献、研究やインターンシップに携わることによって構築できる。
職業の選択:
もし新しいことを学び続けたいと思っているならば、以下に示すことがあなたの成功に影響する:
- 素晴らしい人材やプロジェクトで働いているかどうか:勤勉なヒトの近くで働いていると、あなたは影響を受けるだろう。
- チームマネージャーに加えていっしょに働くチームメンバーのことを知り、評価することに焦点を合わせること(あなたが交流できるチームメンバーは最大でも10~30人だろう)。
- 「ブランド」に焦点を合わせない:企業のブランドは、あなたの個人的な経験がどのようなものになるかとはあまり関係がない。
もし求人のオファーが来たら、まずいっしょに働くであろうチームがどんなものであるかを尋ね、「とりあえず来てくれ、チームへの配属は後でする」と言うようなオファーは決して受けないこと。なぜならばチーム配属を後回しにするオファーを受けると、あなたが興味のない仕事を行うチームに配属される羽目になるかも知れないからである。そして、こうした境遇はあなたを効率的に進化させることを助けない。
以上とは反対に、もし(たとえ無名の会社であっても)良いチームを見つけ出してそのチームに加わることができたならば、あなたは実に多くのことを学ぶことができる。
一般的なアドバイス:
- 最大限に学ぶこと:あなたが最大限に学べる仕事のために物事を選択するようにする。
- 重要な仕事をすること:世界を前進させるような価値のあるプロジェクトで働くこと
- 伝統的な業界で機械学習を試してみること:わたしたちはテック業界において多くのことを変えてきたが、わたしが考えるもっともエキサイティングな仕事のひとつとは、(テック業界の外にある)伝統的な業界を機械学習で変えることだ。というのも、そうした仕事ではより多くの価値を生み出すことができるからだ。
重要なポイント:
アンドリュー教授のアドバイスにおける重要なポイントをまとめると、以下のような項目になる。
- 研究論文を読む習慣を養うこと:まずは1週間に2本の論文を読むことから始めよう。
- 効率的に読むこと:論文のリストを作成し、一度に1本以上を読むようにしてそれぞれの論文は何回か読み飛ばす。
- 論文を読む時には:タイトル/要旨/図表(とくに大事)/序論/結論の順番で読み始めよう。
- アルゴリズムを理解しようとする時には:数学を基礎から再構成し、ソースコードを動かしてコーディングを練習する。
- 最先端に居続けようとすること:機械学習カンファレンスで発表された論文をチェックし、その他のオンラインのソースも活用すること。
- AIにおけるT字型の知識ベースを構築すること
- (大企業あるいはスタートアップの)良いチームに加わろうとすること。そうしたチームはあなたを効率よく成長することを助けてくれるであろう。
- 役に立つプロジェクトで働くこと。そんなプロジェクトからは最大限に学べて、なこかつ世界を前進させられる。
- 機械学習をテック業界とは別の業界で試してみること:そうした業界にはヘルスケア業界、天文学、気候変動などがある。
結論:
わたしはこのブログ記事を充実したものと感じて欲しく、また読者諸氏の機械学習に関するキャリアに幸運があることも願っている。
もしこのブログを気に入ってくれたら、ぜひ(Mediumの)拍手を押してください。
そして、もし記事に関して質問があったら下記のコメント欄を使ってわたしに知らせてください。
それではさようなら!
・・・
この記事はJournalアプリからも読めます。
Journalアプリを使うと、テック業界でもっとも注目すべき記事があなたの受信箱に毎週日曜日の朝に届いてから目覚めることができます。ぜひテック業界のニュースレターで注目記事を読んでみてください。
原文
『Advice on building a machine learning career and reading research papers by Prof. Andrew Ng』
著者
Mohamed Ali Habib
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん