入社1年目のアルゴリズムエンジニアから新人への手紙

入社1年目のアルゴリズムエンジニアから新人への手紙

[[271455]]

ビッグデータダイジェスト制作

出典: towarddatascience

コンピレーション: ビールの泡、風魔、リラクゼーション、静けさ

「自分自身に疑いを持ち、挑戦し続けてください。時には、コミュニケーションがテクノロジーそのものよりも大きな価値をもたらすこともあります。」

- 匿名

読者の皆様へ

こんにちは!オーストラリア出身の機械学習エンジニア、Daniel Bourkeです。私はこの職に1年間従事しています。まあ、この職に馴染みのない読者も多いかもしれません。次の日のワークフローは、私のやり方で確認できます。

午前9時にオフィスに入り、同僚におはようございますと挨拶し、食べ物を冷蔵庫に入れて、ソーダを注いで、自分のデスクに向かいます。私は座って昨日の仕事のメモを見て、Slack を開いてメッセージを読み、チームが共有しているすべての論文やブログを開きます。この分野の更新は非常に急速に進んでいるため、毎日何か読むものがあります。

ニュースを読んだ後、新聞やブログを閲覧し、混乱しているものに焦点を当てます。通常、そこには現在の仕事に役立つ何かが含まれています。私は読む内容に応じて、1 時間、時にはそれ以上読書をします。読書は最も基本的かつ重要なスキルです。今やっていることをより良く行う方法があれば、その方法を学んで実践します。そうすれば、時間とエネルギーを節約できます。

午前10時。仕事の締め切りが迫っている場合は、遅れを取り戻すために読書時間を減らします。これが一日の中で最も多くの時間を費やす時間です。昨日やったことを振り返り、書き留めたフォローアップの手順を確認します。ノートブックにその日のワークフローを記録します。

その後のデータ操作プロセスでは、データを正しい形式に処理したら、モデルでデータを実行する必要があります。最初は、トレーニング時間を非常に短く設定します。進歩があれば、時間を増やします。問題が発生し、データが一致しない場合は、次に、この問題を解決してベンチマークを取得し、新しいモデルを試します。私の時間のほとんどは、データがモデルに必要な形式になっていることを確認することに費やされています。

もうすぐ午後4時、リラックスする時間です。リラックスするというのは、書いたコードを整理して、明確で読みやすいものにすることを意味します。コメントをいくつか追加して、コードを再構成します。他の人が私のコードを読むとしたらどうなるでしょうか? 自分自身にこの質問をします。通常、私のコードを読むのは私自身です。なぜなら、コードを書いたときに思いついたアイデアをすぐに忘れてしまうことが多いからです。

上記は理想的な一日の仕事ですが、毎日こうなるわけではありません。時には午後4時37分に素晴らしいアイデアが浮かび、そのまま仕事を続けることもあります。私の一日の仕事の大まかな流れがわかったところで、機械学習についてお話ししましょう。

人工知能の波は進み続けています。私のように機械学習チームに参加している読者は多いと思います。私の仕事は非常に包括的で、データ収集、データ処理、モデリング、実装サービスまで、私の業務範囲は考えられるあらゆる業界をカバーしています。長い間この職に就いてみて、多くのことが定型的なやり方で行われていることに気づきました。先人の経験をもとに、優秀な機械学習エンジニアが注意すべき12の点をまとめました。これをお読みいただいた読者の皆様にとって、機械学習の実践と研究に役立つものになれば幸いです。

時間を賢く使いましょう: データは重要です!

データ サイエンスの基本原則に精通していれば、実用的なアプリケーションの問題を解決し、コーディングの問題に対処することは、本質的にデータに対処することであることがわかります。驚くべきことに、私はこれを頻繁に忘れてしまい、データの品質を向上させるのではなく、より優れたモデルの構築に重点を置いてしまうことがよくあります。

より大きなモデルを構築し、より多くのコンピューティング リソースを使用すると、短時間で良好な結果が得られます。しかし、あなたは自分がしたことの代償を払わなければならず、次に大きな問題に直面することになるでしょう。

最初のプロジェクトに参加するときは、データに慣れるために多くの時間を費やしてください。私が「たくさん」と言った理由は、通常、かかると見積もった時間を 3 倍にする必要があるからです。長期的には、これによりその後の作業で多くの時間を節約できます。

新しいデータを入手したら、そのデータを最もよく知る専門家になることを目標にしてください。データの分布を確認し、さまざまな種類の特徴を見つけ、外れ値はどこにあるのか、なぜ外れ値なのかを把握する必要があります。データを明確に説明できない場合、どうやってモデルを構築できるでしょうか。

コミュニケーションの重要性を過小評価しないでください

私が遭遇する問題のほとんどは技術的な問題ではなく、コミュニケーションの問題です。技術的な困難は常に存在していたのは事実ですが、それらはエンジニアが解決すべき問題です。社内外を問わず、コミュニケーションの重要性を決して過小評価しないでください。最も悪いことは、解決されるべきではなかった技術的な問題を解決することです。

なぜこのようなことが起こるのでしょうか?

外部の観点から見ると、機械学習を使用すれば顧客の期待に応えることができるにもかかわらず、顧客の期待と私たちが提供できるサービスの間に不一致があるために、このようなことが起こることがほとんどです。社内的には、私たち一人ひとりが会社のさまざまな側面に責任を負っているため、同じ目標に向かって一致団結して働くことは困難です。

1. 自己検査

問題の本質に戻ります。これを頻繁に行ってください。自分自身に問いかけてください。顧客はあなたが提供するサービスを理解していますか? 顧客の問題を理解していますか? 顧客は機械学習が何をもたらし、何がもたらさないかを知っていますか? どのようなコミュニケーション方法を使えば、仕事の結果を簡単に示すことができますか?

2. 社内従業員向け

社内コミュニケーションの問題を解決するために、多くのソフトウェアが設計されてきました。その数から、社内コミュニケーションの問題を解決することがいかに難しいかがわかります。これらのソフトウェアには、Asana、Jira、Trello、Slack、Basecamp、Monday、Microsoft Teams が含まれます。

私にとって最も効果的な方法の 1 つは、毎日の仕事の終わりにプロジェクト関連のチャネルで情報を更新することです。

更新内容は次のとおりです:

  • 3〜4のアイデア
  • 私の仕事について
  • なぜ
  • 上記を踏まえて、次に何をするか

これは完璧ですか?いいえ。しかし、これはうまく機能しているようで、私が行った作業とこれから行う予定の作業を示すことができます。計画を公開することのさらなる利点は、作業計画がうまくいかなかった場合に他の人がそれを指摘してくれることです。どれだけ優秀なエンジニアであるかは問題ではありません。重要なのは、自分の技術が何であるか、そしてその技術が何をもたらすかを他の人に伝える能力です。これは、既存のビジネスを維持し、新しいビジネスを開発する能力と密接に関係しています。

安定性 > 最先端

かつて、テキストをさまざまなカテゴリに分類するという自然言語の問題がありました。タスクの目標は、ユーザーがテキストをサービス センターに送信し、テキストを 2 つのカテゴリのいずれかに自動的に分類できるようにすることです。モデルの予測が十分に正確でない場合、テキストは手動処理に引き渡されます。ワークロードは 1 日あたり約 1,000 ~ 3,000 件のリクエストで、それ以上でもそれ以下でもありません。

BERT は今年最も注目された用語になりました。しかし、Google の大規模なコンピューティング ツールがなければ、BERT トレーニング モデルを使用してニーズを満たすのは非常に面倒であり、これはモデルを本番環境で使用する前に必要な作業にすぎません。そこで、別の方法である ULMFiT を見つけました。この方法は最先端ではありませんが、十分な結果が得られ、使いやすいです。

方法を完璧に改善するのではなく、既存のモデルから学習し、それに基づいて転移学習を実行する方が、より多くの価値をもたらすことができます。

機械学習における2つの大きな困難

機械学習を実践する上でのボトルネックには、コース結果からプロジェクト結果へのボトルネックと、理論モデルから本番モデル(モデル展開)へのボトルネックの 2 つがあります。

機械学習コースをインターネットで検索すると、大量の結果が返され、その多くを利用して独自の AI 修士課程プログラムを作成しました。しかし、最高のコースをいくつか修了した後でも、機械学習エンジニアとして働き始めたとき、私のスキルは依然としてコースの構造化されたバックボーンに基づいていました。現実の問題では、プロジェクトは構造化されておらず、私は具体的な知識が不足していました。オンラインのインターネット コースでは、データに疑問を投げかける方法、モデルを探索および開発する方法などのスキルを教えることはできません。

1. どうすれば改善できるでしょうか?

私は幸運にもオーストラリアで最も優秀な人材と一緒に仕事ができるのですが、学ぶことも間違いを恐れません。もちろん、間違うことが目的ではありませんが、正しくなるためには、何が間違っているのかを把握する必要があります。コースを通じて機械学習を学習している場合は、そのコースの学習を継続し、学んだ知識を自分のエンジニアリング プロジェクトに適用して専門知識を身に付けてください。

2. 仕事の能力を向上させるにはどうすればいいですか?

この分野に関する私の知識はまだ非常に限られていますが、機械学習エンジニアリングとソフトウェア エンジニアリングが融合しているという傾向に気づきました。 Seldon、Kubeflow、Kubernetes などのオープンソース プラットフォームの開発により、機械学習はすぐにそれらのプラットフォームの一部になるでしょう。

Jupyter ノートブックでモデルを構築することは一つのことですが、そのモデルを何千人、あるいは何百万人もの人々に利用できるようにすることは別のことです。最近のクラウド ネイティブ イベントでの議論によると、大企業以外のほとんどの人は、これを実行する方法を知りません。

パレートの法則

機械学習には 80/20 ルールもあります。20% ルールは、時間の 20% を学習に費やす必要があることを意味します。

この学習時間は貴重なものであることが証明されました。たとえば、ULMFiT が BERT よりも多く使用される理由は、20% 時間ルールによるものです。20% の時間は学習に使用され、残りの 80% の時間はコア プロジェクトに費やされることになります。

  • コア製品の80%(機械学習プロフェッショナルサービス)。
  • コア製品に関連する新しいものが 20% あります。

もしあなたの仕事の強みが、今やっている仕事で一番優れているということであれば、将来の仕事も、あなたが一番得意なことを続けていくこと、つまり継続的な学習にかかっています。

この論文は注意深く読む必要がある

これは大まかな指標ですが、いくつかのデータセットと実験現象を調べてみると、これが客観的な事実であることがわかります。この概念は、同じトピックに関する論文の半分は生産性の高い著者のグループによって書かれ、この著者グループの数は著者の総数の平方根にほぼ等しいというジンフ/プライスの法則に由来しています。言い換えれば、毎年何千もの投稿の中から 10 件の重要な論文が見つかるかもしれませんが、その 10 件の重要な論文のうち 5 件は同じ研究機関または著者によるものである可能性があります。

時代の流れにどうついていけばいいのでしょうか? すべての新しいブレークスルーについていくことはできません。いくつかの基本原則を習得して適用したほうがよいでしょう。これらの基本原則は時の試練に耐えてきました。新しいブレークスルーはオリジナルのブレークスルーに頼る必要があり、その後に新しい探求と開発が必要です。

自分自身に懐疑的になる

自分自身を疑うことで、探索と活用の問題に対処できます。探索と活用の問題は、新しいことを試すことと、既存のモデルの結果を再利用することの間のジレンマです。

1. 独自のモデルを開発する

すでに使用しているモデルを実行して高精度の結果を取得し、それを新しいベースラインとしてチームに報告するのは簡単です。しかし、良い結果が得られた場合は、自分の作業を何度も確認することを忘れないでください。また、チームにも同じように確認してもらってください。なぜなら、あなたはエンジニアであり科学者だからです。

2. 新しいことを探求する

ここでも 20% の時間基準が適用されますが、70/20/10 の分割の方が適切です。おそらく、コア製品に 70%、コア製品の構築に 20%、探索に 10% を費やすことになるでしょう。探索はおそらくうまくいかないでしょうが、私自身はこのアプローチを試したことはありませんが、それが私が目指している方向です。

小さな一歩が千里の道につながる

千里の道も一歩から始まります。まずは小さなものを構築して、新しい概念をすぐに理解できるようにします。独自のデータ セットを使用することも、関連のない小さなデータを使用することもできます。小規模なチームでは、まず小さなステップで成功し、その後すぐに繰り返すことが成功の秘訣です。

ゴム製のアヒルで遊ぼう

多くのプログラマーは、ラバーダック デバッグ法を知っているかもしれません。これは、コードをデバッグするときにラバーダックを携帯し、コードの各行を詳細に説明するというものです。多くの読者はこれを面白いと思うかもしれませんが、その背後には原理があります。これは、回答の円錐と呼ばれる一般的な現象に似ています。たとえば、友人があなたに質問をし、会話の途中で彼はすでに問題を見つけており、あなたは困惑した表情を浮かべています...一般的に、自分の問題を他の人に伝えようとすると、自然に自分の考え方を調整するよう促されます。この方法は、プログラマーにも当てはまります。

ラバーダック法は同僚のロンから教わりました。問題に遭遇したとき、座ってコードをじっと見つめると問題が解決するかもしれませんが、そうでない場合もあります。このときは、ラバーダックと同じように、チームメイトの言葉で言い直すのがよいでしょう。

「ロン、私はこの配列をループして、別の配列をループしてその状態を追跡することでこの配列の状態を追跡しようとしています。そして、それらの状態をタプルのリストに結合したいのです。」

「ループの中にループ?ベクトル化したらどうですか?」

「これやってもいいですか?」

"見てみましょう。"

「……」

転移学習は重要

モデルを根本から再構築する必要はありません。この問題は、機械学習エンジニアリングとソフトウェア エンジニアリングの統合から生じます。データの問題が非常に特殊でない限り、分類、回帰、時系列予測、推奨システムなど、主要な問題の多くは非常に似ています。

Google や Microsoft の AutoML などのサービスを使用すると、データセットをアップロードしてターゲット変数を選択するだけで、簡単に機械学習を使用できます。しかし、これらはまだ初期段階であり、形になっていません。開発者であれば、数行のコードで最先端のモデルを使用するには fast.ai のようなライブラリと、さまざまなモデル用の事前構築済みモデルだけが必要です。たとえば、PyTorch hub と TensorFlow は同じ機能を提供します。

これは何を意味するのでしょうか? 機械学習は非常に便利になりましたが、それでもデータサイエンスと機械学習の基本原理を理解し、さらに重要なことに、それらを適切に適用する方法を知る必要があります。

数学かコードか?それは問題だ

私が取り組んでいるクライアントの問題については、まずコードを扱い、機械学習とデータ サイエンスのコードはすべて Python で書かれています。時々、論文を読んでそれを再現することで数学に手を出してみることもありますが、99.9% の場合、既存のフレームワークにはすでに数学用のライブラリが存在します。

現実の生活では数学は想像されているほど重要ではありませんが、結局のところ、機械学習とディープラーニングはどちらも数学の応用です。しかし、最小の行列乗算、線形代数と微積分、特に連鎖律を知ることは、依然として最も重要です。

覚えておいてください、目標は新しい機械学習アルゴリズムを発明することではなく、機械学習がビジネスに役立つかどうかをクライアントに示すことです。強固な基盤があれば、既存のモデルを再利用するのではなく、独自の最適なモデルを構築できます。

ソフトウェア業界における迅速な反復

昨年行った作業は、来年は役に立たないかもしれません。これは客観的な事実であり、ソフトウェア エンジニアリングと機械学習エンジニアリングの融合により、ますます深刻になっています。しかし、皆さんが機械学習という大きなファミリーに加わった今、変わらないものをお伝えします。フレームワークは変わり、ライブラリは変わりますが、基本的な統計、確率論、数学は決して変わりません。 最大の課題は、それをどのように適用するかです。

ここまで述べてきましたが、上記の提案が機械学習の初心者や実践者にとって役立つことを願っています。最後に、楽しんでデータの旅を始めましょう!

関連レポート:

https://towardsdatascience.com/12-things-i-learned-during-my-first-year-as-a-machine-learning-engineer-2991573a9195

[この記事は51CTOコラムBig Data Digest、WeChatパブリックアカウント「Big Data Digest(id: BigDataDigest)」のオリジナル翻訳です]

この著者の他の記事を読むにはここをクリックしてください

<<:  求職者の履歴書はどうすればAIやロボットによる審査に合格できるのでしょうか?

>>:  機械学習とビジネスを組み合わせる上で最も重要なことは何でしょうか?

ブログ    
ブログ    

推薦する

AIがいかにして将来の採用担当者のスキルを生み出すか

AI が採用業務を自動化し続けるにつれて、採用担当者のスキルが変化するという共通認識が広まりつつあり...

スイスのCERTがボットネットのドメイン名生成アルゴリズムを解読し、多数のトップレベルドメインをブロック

スイス政府コンピュータ緊急対応センター(GovCERT)は、ボットネットTofseeが通信に使用して...

...

...

Google の最新 AI モデル「Gemini」について知っておくべきことすべて

Google Geminiとは何ですか? Gemini は、テキストだけでなく画像、ビデオ、オーディ...

2021年1月から2月までの中国人工知能の月次情報まとめ

[[389793]]国内人工知能産業への投資と資金調達の調査不完全な統計によると、過去2か月間に66...

1行のコードでsklearnの操作が数千倍高速化

1 はじめにみなさんこんにちは、フェイ先生です。機械学習の定番フレームワークであるscikit-l...

Kubernetes デバッグの究極の武器: K8sGPT

人工知能と機械学習の技術が進歩するにつれ、企業や組織は競争上の優位性を得るためにこれらの機能を活用す...

科学者はロボットに人間に近い触覚を与える人工指先を開発

ロボットは車を持ち上げたり、手術を手伝ったりするようにプログラムできますが、卵など、これまで扱ったこ...

Googleは社内でAIを使ったコンピュータチップの開発を試みていることを明らかに

グーグルの人工知能研究責任者ジェフ・ディーン氏によると、同社は人工知能プログラムを搭載したソフトウェ...

保険業界は人工知能をどのように活用しているのか

保険業界の企業や顧客にとって AI がどのように役立つか、また代理店向けの最新のポリシーについて説明...

AI を使って AI を修正しますか?これらの検出ツールを理解する

生成型AI作成ロボットの登場以来、各界はロボットを使って記事や学術論文を書くようになりました。この状...

ビッグデータ採用、アルゴリズムによって選ばれた

[[76655]]大学に通ったことのない26歳のジェド・ドミンゲスさんは、ギルデッドのアルゴリズムに...

近年の人工知能の発展を理解する

[[381014]]近年、AIの波が全国を席巻し、さまざまな業界で人間の仕事がAIに置き換わっていま...

...