データサイエンスはつまらない(パート1)【後編】

最終更新日:

著者のIan Xiao氏は、顧客企業に機械学習ソリューションを提供するカナダの企業DESSAにおいて「契約リード(Engagement Lead)」という肩書で機械学習プロジェクトを指揮管理しています。同氏がMediumに投稿した記事「データサイエンスはつまらない(パート1)」では、データサイエンス職におけるつまらない側面が解説されています。

同氏の甥はコンピュータサイエンスの修士課程で勉強しており、卒業後はデータサイエンス職に就きたいと考えていると聞いて、同氏は甥が正しい判断を下せるようにデータサイエンス職における「つまらない」側面をあえて伝えようと決意しました。

データサイエンス職を志望する若者は、仕事に就けば機械学習モデルの構築のような知的にエキサイティングな業務に携われると思い込んでいます。しかし、現実には業務時間のほとんどを退屈でつまらない仕事に関わることになる、と同氏は指摘します。こうした理想と現実のギャップを「設計」「コーディング」「QA/デバッグ」「炎上対策」のフェーズごとに論じ、ギャップに耐える対処法も伝授されます。

同氏はデータサイエンス職において理想と現実のギャップに悩むこと自体は極めて正常であると述べたうえで、キャリアを築くためには「最終的な勝利にいたる途上で小さな報酬を得ることを楽しむべき」とアドバイスします。このアドバイスはデータサイエンス職に限らず、すべての職業のキャリア形成に通用するものでしょう。

ちなみに、この記事は続編となるパート2とパート3があり、パート2では2年後のデータサイエンス職に関する考察、パート3ではデータサイエンス職でキャリアを築き優秀となる方法が論じられています。

以下の後編にあたる記事本文では、「コーディング」「QA/デバッグ」「炎上対策」フェーズの理想と現実のギャップとその対処法が論じられたうえで、データサイエンス職のキャリア形成に関するアドバイスが説かれます。

前編記事は、以下から閲覧できます。

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

いかにして私は機械学習の実装というつまらない日々をやり過ごしているか

画像出典:UnsplashJulian Howardより

3.2.コーディング(役割によって変動するが業務全体時間に対して20~70%)

コーディングという業務自体に関しては、とくに言うことはあまりない。ヘッドフォンを着けてコーヒーを少しづつ飲みながら、指を広げてスクリーンを見つめ、美しいコードをタイプして魔法が起こるようにする。

私たちのコードは一般的に5つのカテゴリーに分類できる(以下、%は各カテゴリーの総コード数に対する割合を示す):データパイプライン(50~70%)、システムとその統合箇所(10~20%)、機械学習モデル(5~10%)、デバッグと表示をサポートするための分析箇所(5~10%)。以上の分類と割合はほかの同業者の洞察とだいたい一致している。以下に分類と割合を図解したより大きな画像を示す。

Sergey Karayev氏のディープラーニング総合講座から引用したサンプルモデルコードにおける各コードの割合

上の画像を見るとわかるように、私たちは業務時間のほとんどを機械学習ではないつならない部分に費やしている。機械学習コンポーネントは非常に重要であるものも、(例えばKeras、XGBoost,、Pythonのsklearnのような)現代的なフレームワークとコーディング言語は機械学習コンポーネントの複雑さの多くを抽象化して除去してしまっている。このことは、私たちが必要としている結果を達成するのに多大なコーディングが求められないことを意味している。機械学習システムにまつわるワークフローはすでによく標準化され、最適化されている(低レベルにおける最適化の実行は異なっているものも、そうした業務はおそらく全体のケースに対して1%だ)。

期待していたこと:機械学習コンポーネントの開発と洗練にほとんどの時間を費やす。自分とは違う誰かが、残りの部分を処理する。

現実:誰も次のようなことは望まない。1)やりたくないことをやること。2)自分の好きなことをおあずけし続けること。3)すでによく最適化されたワークフローにおいて不釣り合いに多くの時間を費やすこと

対処法:自分の専門知識にもとづいて設計上の決定を下せるように主導権を握り、(例えばアイデアで貢献したり、実践的な開発を披露したり、QAを実行したりして)他人の役割をサポートしながら自分の担当箇所に関する主要な開発者になること。他人から学びながら自分の力量を発揮できるようにすること。重要なのは、こうした対処法が「セクシーな業務」をしたいという葛藤に由来するストレスを回避することを助けてくれる。

3.3.QA、デバッグ、そしてク●の改修(少なくとも業務時間全体の65%)

私見では、以上の業務がいかなる技術的開発業務のなかでももっともつまらなく苦痛に満ちたものである。機械学習システムの開発においても例外ではない。

機械学習のコンテクストにおいては、2種類の「バグ」が存在する。悪い結果と伝統的なソフトウェアの問題である。悪い結果とは、(例えば予測精度や動作の精確性に関して)モデルのスコアが低かったり、(例えばビジネスの経験に照らし合わせて確率が非常にいびつであるような)鈍い予測のようなものである。悪い結果においてはソースコードに間違いはなく、結果が意味を為さなかったり不十分だったりする。伝統的なソフトウェアの問題とは、ソースコードの破損あるいはシステム設定の問題のようなものを含んでいる。

期待していたこと:悪い結果に対しては対処する必要があり、より良いモデルを構築するスマートな方法を考えなければならない。こうした業務は依然として知的で魅力的である。何かしらの良いアイデアによってモデルのパフォーマンスが向上するのを見ると報われた気持ちになる。

現実:QA/デバッグ/バグの改修に費やす時間のうち、70~90%は伝統的なソフトウェアの問題に関わっている。たいていの場合、速やかにエンドtoエンドのモデルを構築して訓練し、パイプラインを検証した後には十分に良い結果を達成できる。その後、システム上の問題に焦点を合わすためにしばしばモデリング業務の優先度を下げる。

対処法:私はGitHubのイシュー機能(※註1)を使って、以上のつまらない業務をゲーミファイして「トロフィーボード」化するようにしている。複数のイシューのチケットをクローズする時、私は束の間ドーパミンが噴出するのを感じる。「征服」されたイシューを見ると誇らしく思え、ますます誇りが欲しくなる。もし「Go」ボタンを押すとすべてが魔法にかかったようにうまく行ったら、最高に誇らしい ― もっとも、こんな誇らしいことは大学のプログラミング過程で1回だけ起こったきりではあるが。この誇らしい感情は、私の残りの人生においても忘れることはないだろう。もしこんな誇らしい出来事が現実にもう一度起こったとしたら、おそらく何かが間違っているだろう。

GitHubのイシュー管理画面を撮影したスナップショット

(※註1)GitHubのイシュー(Issue)機能とは、GitHubで利用できるタスク管理機能である。タスク管理ツールは多数存在するが、GitHubのイシュー機能を使うとタスクとソースコードを紐づけることが容易になる。

3.4.炎上対策(業務時間全体の10~50%)

炎上対策はどんな配信チームマネージャーにとっても悪夢であり、データサイエンスだけが特別違うということはない。タイムラインがどれほど想定外かということは問題ではない。問題はいつ何時でも起き、あなたを軌道から外してしまう。具体的には、こうした驚きは3つのカテゴリーに分類できる。a)スコープの変更、アップストリームシステムへの依存、そして顧客の不満に由来するような外部的な問題b)解決が予想以上に放置されてきたバグに悩まされる、あるいは新しい職種に就いたのに引き継ぎがされない人材、人員不足、人格的な衝突のような内部的な問題c)多方面から「その他大勢」に分類されてしまって無視されること

期待していたこと:プロジェクトの開始から終了まで順調に航行できること。顧客、上司、そしてチームメンバーからのハイタッチとハグ。

現実:予期せぬことは、たいていもっとも不都合な時に起こるものだ。予期せぬことにはパターンがあるのだがすべてを網羅する公式などないので、予期せぬことはフラストレーションを引き起こす。

対処法:1)もし予期せぬことが技術的に深刻なことに関連していたり、チーム間のクロスオーバーが求められるものならば、時間的余地を残すためにタイムラインを2~2.5倍増やすこと。2)内部的なマイルストーンを設定する時は積極的になる。3)心のなかで悪態をつく、そして適切な時には実際に声に出してみる。4)呼吸し、笑顔を作り、そして相手の話を聴く。5)チームメンバーといっしょになって可能なすべての選択肢を探し出し、それらの選択肢に実行可能性、労力、そして実行に伴って生じる抵抗にしたがって優先順位を付ける。6)もし考えた選択肢のいずれもうまく行かなかったら、間髪入れずに助けを求める!7)とにかく選択肢を実行する。それらの多くは対処法としてうまく行かないだろうが、よい教訓となって役に立つようになる。

・・・

4.まとめると

これまでに色々述べてきたのは、現実世界におけるデータサイエンスは難しいと言いたいがためであった。機械学習に関するキャリアを追求したいと熱望しているヒトは、モデルの構築以外の多くの仕事があるという事実を認識すべきである。データサイエンスのキャリアを目指してもほかの仕事のキャリアと同様に、結局はつまらなくなりフラストレーションをため込むだろう。だが、そんな風に反応しても大丈夫であり、むしろ正常なのである。もっとも重要なのは、データサイエンスのキャリアを追求するというゲームを長きにわたって続けるために退屈やフラストレーションに対する対処法を開発し、最終的な勝利にいたる途上で小さな報酬を得ることを楽しむべきなのだ。

以上は、私とショーンとの会話におけるほんの一部分に過ぎない。この記事に続く2本の記事では今後2年以内でデータサイエンスの分野がどのように見られるようになるのか、そしてデータサイエンスの分野に留まり続けて優秀になる方法に関する私の考えをシェアしようと思う。乞うご期待!

・・・

あなたは記事を読むのが好き?その場合は、私のMediumLinkedIn、あるいはTwitterをフォローしてください。データサイエンティストとして影響力のあるビジネスを展開したい?その場合は、私が作成した「機械学習の影響力」というPDFファイルのガイドをチェックしてください(このガイドは2019年9月30日から閲覧可能です)。ガイドの準備ができた時には、購読読者にはお知らせします。

・・・

それではまた次回まで

Ian Xiao


原文
『Data Science is Boring (Part 1)』

著者
Ian Xiao

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

編集
おざけん

2019年10月15日

無料メールマガジン登録

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

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

規約に同意する