最終更新日:
前編はこちら
新興の技術職であるデータサイエンティストは、確率や統計に関する体系的知識のような従来のソフトウェアエンジニアには不可欠とされなかった知識が必要とされます。その一方でソフトウェアエンジニアを経験していれば習得できる技術と知識の一部は、データサイエンティストになっても役立つものです。そうした技術と知識には、ソフトウェアテストやソースコード管理が挙げられます。それゆえ、ソフトウェアエンジニアからデータサイエンティストにキャリアチェンジする場合には、ソフトウェアテストやソースコード管理に関する技術と知識を持っていることを大いにアピールすべきなのです(以上の論点は、本翻訳記事前編で解説)。
また、実際にデータサイエンティストを目指す場合には、どの業界で働くのかが重要になってきます。というのも、業界ごとに取り扱うデータの種類と内容が異なるからです。データサイエンティストとして働きたい業界が取り扱うデータの特徴とそのデータに適用する技法を知るには、目指す業界におけるAIスタートアップの公式サイトに掲載されている業務内容と求人要項を調べるとよいでしょう。こうして調べた情報のなかには、働きたい業界で現実に使われている技術と求められている人材像に関する記述があるはずです。使われている技術や必要とされるスキルがわかったら、あとはそれらを習得すべく勉強すればよいのです(以上の論点は、本翻訳記事後編で解説)。
本記事ではデータサイエンティストになるために必要な知識と技術の習得に役立つオンライン講座や独習資料が豊富に紹介されています。これらの情報は英語圏のものなのですが、日本における同種の情報に関しては以下のAINOW記事にまとめられています。
ソフトウェアエンジニアとデータサイエンティストは全く別種の職種ではなく、ソフトウェアエンジニアで培った技術と知識はデータサイエンティストでも役に立つという本記事の主張は、日本におけるデータサイエンティスト志望者を大きく勇気づけるのではないでしょうか。
なお、以下の記事本文はCecelia Shao氏に直接コンタクトをとり、翻訳許可を頂いたうえで翻訳したものです。
機械学習に特化した知識の構築術
機械学習に特化した知識を構築するには、提供されたコンピュータやGPUを使って機械学習モデルと格闘し訓練するような応用的なスキルと同じくらい確率と統計をめぐる理論にもとづいた複合的な知識を築くのがもっとも効率がよい。
あなたが得ようとしている機械学習に関する知識を組み立てる方法のひとつには、機械学習に関する以下のワークフローを参照する方法がある。
以上のグラフの詳細は、Skymind AIによるワークフローの詳細を参照してほしい。
以下では、機械学習に関して見つけることができるベストなリソースのうちのいくつかをリストアップする。なお、本記事の分量(と読む時間)の節約のために網羅的なリストを示すことはおそらく不可能なので、Andrew Ng氏のCourseraの講義やKaggleといった非常に有名なリソースには言及していない。
講義
- Fast.ai MOOC(実践的あるいは最先端のディープラーニングのコーディング、線形代数の数値計算、機械学習のコーディングのような非常に応用的なスキルを教える無料のオンライン講義)
- Khan Academy
- YouTubeチャンネルの3Blue1Brownとmathematicalmonk
- Udacityの講義(「Pythonによる機械学習のための前処理」が含まれる)
- Springboard:AI/機械学習に特化したコース
テキストブック:*テキスト資料のなかでも無料で配布しているオンライン上のPDFを探してみた*
ガイド
- Google機械学習開発者ガイド
- 機械学習習得ガイド(よいスタートを切るには、Pythonによる機械学習に関するこの小さい講義を見よ)
- Pyimagesearch(コンピュータビジョンのためのガイド)
交流会:*原則的にアメリカ・ニューヨークを拠点としているもの*
良いスタートを切るには、Will Wolfの「機械学習習得のためのオープンソース」をチェックし、このリソースに掲げられた個々のトピックの勉強に時間を費やし、そして列挙された練習問題としてのプロジェクトに取り組むのが低コストかつ遠隔地でも可能な方法だ。
特定の業界に特化した知識の構築術
もしあなたが医療、金融サービス、消費者向け製品の製造、あるいは小売業のような特定の業界のデータサイエンティストになりたいと漠然と思っているならば、その業界がどのようにデータと機械学習と関係しており、そしてそれらの開発方法や苦心していることを知るのは非常に価値あることだろう。
プロになるためのひとつのヒント = 特定の分野に特化したAIスタートアップのウェブサイトを閲覧すれば、そのスタートアップがどんな価値ある提案をすることで市場にアピールしているか、そしてその提案を実行するためにどこで機械学習を使っているかがわかるはずだ。こうしたことは、特化した領域のための機械学習を勉強するためのアイデアやあなたが取り組むべきプロジェクトに関する要点を与えてくれるだろう。
以下では、実際にAIスタートアップのウェブサイトから勉強内容を抽出する事例を示す。事例では医療業界で働くことに興味があるとする。
1.「機械学習 医療」とざっくりググると、Healthcareweekly.comが作成したリスト「2019年に注目すべきベストな医療系スタートアップ」が見つかる。
CrunchbaseやAngelListを使って「医療」というキーワードで検索してもよい。
2.以上で見つけたリストで掲載されている企業のなかから、事例としてBenevolentAIをとりあげる。
3.BenevolentAIのウェブサイトには、以下のような文言がある。
わたしたちは、薬品の早期の創薬から後期段階の臨床環境の開発にいたるまで幅広い機能を備えたAI企業です。BenevolentAIはオープンシステムとクラウドコンピューティングの原理を使って計算医療と先進AIを結合することで、医薬品の設計、開発、試験そして市場への投入方法を変えるのです。
わたしたちは膨大な量の生物医学的な情報にもとづいて疾病をより良く理解し、さらに既存の治療法を一新し進化させるためにBenevolentプラットフォームを構築しました。わたしたちは自分たちのテクノロジーによって科学者がより早くより効率的に医薬品を開発できるようになると信じています。
新しい研究論文は30秒ごとに発表されているにもかかわらず、科学者は病気の原因や新しい治療法の提案を理解するためにそうした利用可能な新知識のごく断片しか使えていません。わたしたちのプラットフォームは執筆された資料、データベース、そして実験結果から莫大な量の情報を収集し、「読み込み」そして解釈可能とします。さらには一見すると共通点がなく複雑なデータソースに対して制約のない演繹と推論を行い、データ間の関係、トレンド、パターンを特定あるいは創造します。こうしたことはヒトが独力で実行するのは不可能でしょう。
4.以上のような業務内容を読めば、BenevolentAIが自然言語処理(NLP)を活用していることが即座にわかるに違いない。そして、この企業が病気とその治療法のあいだにある関係を特定しようとしているならば、おそらくナレッジグラフ(※註1)も活用していることもわかるだろう。
5.BenevolentAIの求人をチェックすると、シニア機械学習リサーチャーを雇おうとしていることがわかるだろう。求人情報からデータサイエンティストになるために習得すべき知識を知るという目下の目的を果たすのに完璧な事例とは言えないが、この職種の役割に関して企業が求めているスキルと知識を以下に示す。
求められるスキルに関するキーワード:
- 自然言語処理、ナレッジグラフを使った推論、アクティブラーニング、生化学的なAIモデリング
- 構造化データと非構造化データ
- ベイズ統計学的なAIモデルのアプローチ
- 機械学習のための現代的なツールの知識
以上のキーワードがわかったうえで、あなたが次に進むために歩むべきステップを示すと以下のようになる。
- 構造化データを取り扱えるようになる
- 非構造化データを取り扱えるようになる
- ナレッジグラフにもとづいた関係の分類(このことに関するよい資料はここ)
- ベイズ統計学における確率とAIモデル構築のためのアプローチの学習
- NLPプロジェクトに取り組む(AIを使ってテキストデータに取り組むこととなる)
以上のようにして勉強すべきスキルと知識を割り出すプロセスを、あなたが実際に検索して見つけた企業にそのまま応用することは薦められない。むしろBenevolentAIのようなAIスタートアップの顧客が抱えている問題、そのスタートアップによる価値ある提案、そして求めている職種の募集要項に書かれたスキルはどんなものなのか、といったことをデータサイエンティストになるために見て欲しいのだ。
機械学習関連のツール
BenevolentAIのシニア機械学習リサーチャーの募集要項では、この企業は「Tensorflow、Python等の機械学習のための現代的ツールに関する知識」が求められていた。
以上のような機械学習のための現代的ツールの習得は、これらのツールが絶えず変化するためになかなか手を出せなくなっている。こうした現代的ツールの習得過程を取り組みやすい部分に分解するためには、すでに引用した機械学習のためのワークフローに再び注目し次のように考えればよい。「このワークフローのこの部分について自分を助けることができるツールとは何か」。
以上の機械学習のためのワークフローにおける各ステップを支援するツールが何であるか知るためには、Roger Huangの「機械学習入門」をチェックするとよい。そこではDocker、Comet.ml、そしてdask-mlについて解説されている。
戦術的に話せば、PythonとRはデータサイエンティストがもっとも共通して使うプログラミング言語であり、データサイエンティストになればデータサイエンス用に設計されたNumPy、SciPy、そしてmatplotlibのようなアドオンパッケージと遭遇することになるだろう。こうしたプログラミング言語はコンパイルされるというよりは解釈されるので、データサイエンティストは言語のニュアンスよりは取り組んでいる問題に注力するように仕向けてくれる。クラスとしてのデータ構造を理解するためにオブジェクト指向プログラミングの学習に時間を費やすことも価値のあることだ。
TensorflowやKeras、PyTorchといった機械学習用のフレームワークの流行に追いつくためには、必ずこれらに関するドキュメントにあたりチュートリアルを隅々まで試してみることだ。
本記事をここまで読むと、実際に自分のプロジェクトを立ち上げて色々確かめてみたくなるだろう。そうしたプロジェクトにおいてはデータを集めて弄りまわし、実験とその結果を管理することを通して機械学習モデルを構築するために以上に述べた現代的なツール群が必要となる。
あなたが取り組むべきプロジェクトに関するインスピレーションを得るためには、Edouard Harrisのエッセイ「コールドスタート問題:いかにして機械学習に関するポートフォリオを作るか?」(※註2)をチェックするとよい。
名称 | 概要 |
---|---|
Docker | Dockerとは、仮想化技術のひとつでありシステム環境を一括して保存することを可能とする。ホストOS上で動作するDocker Engineと呼ばれるシステムが、複数のシステム環境をリソース管理を行う。Dockerを使うと、開発環境を簡単に構築あるいは移植できる。 |
Comet.ml | Comet.mlとは、機械学習プロジェクトに特化したプロジェクト管理ツール。ちなみに前述したように、本記事の著者はこのツールを開発・提供するCometのプロダクトマネージャーを務めている。 |
dask-ml | dask-mlとは、並列計算が簡単にできるPythonのライブラリであるDaskを、さらに機械学習用に改良したもの。 |
NumPy | NumPyとは、数値計算を効率的に処理できるように設計されたPythonのアドオン。高水準な数学関数に対応している。 |
SciPy | Scipyとは、科学計算と工学計算を効率的に処理できるように設計されたPythonのアドオン。統計、積分、遺伝的アルゴリズム、フーリエ変換等に対応している。 |
matplotlib | matplotlibとは、Pythonと上述のNumPyとSciPyの計算結果をグラフとして描画できる描画ライブラリ。 |
Tensorflow | Tensorflowとは、Googleが無料提供する機械学習のためのオープンソースのライブラリ。学習リソースが充実している。 |
Keras | Kerasとは、ニューラルネットワークを開発することを目的に設計されたPythonで書かれたライブラリ。Tensorflowで動作させることができる。ディープラーニング開発を迅速に開発できることで知られている。 |
PyTorch | PyTorchとは、Facebookが開発したオープンソースの機械学習ライブラリ。基本的な操作方法が上述のNumPyと酷似しているとも言われている。 |
スキルと知識
この節は最後まで残していた。というのも、この節の内容は、データサイエンス職の面接時に役立つようにこれまでの節で述べた大量の情報をまとめ上げるものだからだ。データサイエンス職の面接では、以下のような6つのトピックが尋ねられる。
以上のトピックのうちのひとつが、ほかと異なることに気づくだろう。そのトピックとは成果物だ。データサイエンス職にとっては、技術的な概念とその概念がもたらす結果について話すことはビジネス上の指標に照らして成果物のインパクトについて話すのと同じくらい重大なことなのだ。
データサイエンス職の面接で尋ねられる質問に関しては、以下のような役立つまとめ資料がある。
https://github.com/kojino/120-Data-Science-Interview-Questions
https://github.com/iamtodor/data-science-interview-questions-and-answers
https://hookedondata.org/red-flags-in-data-science-interviews/
https://medium.com/@XiaohanZeng/i-interviewed-at-five-top-companies-in-silicon-valley-in-five-days-and-luckily-got-five-job-offers-25178cf74e0f
以上のまとめ資料のなかにHooked on Dataの「データサイエンス職の面接における危険信号」もあることにお気づきだろう。あなたがこの職種の面接を受ける時、すでにデータに関するインフラストラクチャを確立している企業から、自分たちのデータサイエンスチームがより大きい規模の企業のそれがもっている価値を実現するにはどうしたらよいか詳らかには理解していない企業まで渡り歩くことになるだろう。
発展途上の企業は、以下に示すデータサイエンスにおける要求の段階をまだ昇っている途中なのだ。
企業がデータサイエンス職の面接をめぐって期待していることに関しては、
Tim Hopperのエッセイ「数多くのデータサイエンス職の面接に落ちたことについての考察」を読むことをお薦めする。
読んでくれてありがとう。わたしはこのガイドが、データサイエンス職があなたが目指すものとして考慮すべき職種かどうか、そして目指すと決めたらゴールまでの行程を何処から始めるとよいかを理解する助けとなることを願っています。
データサイエンス職に関して最新情報を知りたい?そんな時は、隔週で配信される新しいデータサイエンスに関するメーリングリストML Jobs Newsletterに登録すると、あなたのメール受信箱に情報が届くでしょう。
原文
『If you’re a developer transitioning into data science, here are your best resources』
著者
Cecelia Shao
翻訳
吉本幸記(フリーライター、JDLA Deep Learning for GENERAL 2019 #1取得)
編集
おざけん