開発から生産まで: 機械学習に関する 7 つの実践的な提案

開発から生産まで: 機械学習に関する 7 つの実践的な提案

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discovery)から転載したものです。

私がスタートアップ企業で働き始めた主な理由はプロジェクトを遂行するためだったので、緊急のタスク、小規模なチーム、頻繁に変更されるプロジェクト要件、その他の些細な問題にもかかわらず、私は働き続けました。残念ながら、機械学習エンジニアとしての私の最初のプロジェクトは、始めるのがそれほど簡単ではありませんでした。

[[360184]]

それは大きなクライアントを抱えた大きなプロジェクトであり、大きな責任を伴うものでしたが、プロジェクトを担当するチームは小規模で、そのチームのメンバーの1人は私のような新人でした。プロジェクトリーダーが私に 12 個のモデルの処理を指示した日のことを、思い出すだけでも今でも怖くなります。さらに悪いことに、チームメンバーの一人が別のプロジェクトに異動になったため、彼の仕事量は私にかかってきました。

しかし、私はあなたに不満をぶちまけるためにここに来たわけではありません。このプロセスは非常に困難でしたが、著者は予想外の経験をたくさん得ることができました。

継続的な研究

私が犯す最大の間違いの 1 つは、特定のデータに最適であるという理由だけで、すべてのデータに特定の方法を使用することです。つまり、プロジェクトの開始時にのみ実験を行ったことになります。ショートカットを見つけてからは、データがどんどん大きくなっても、私はその方法を使い続けています。

著者はそれが当時最も効果的な方法であったと信じています。しかし、機械学習エンジニアとしては、システムを構築するだけでなく、そのパフォーマンスを継続的に改善する必要もあります。この事実を受け入れるのに一ヶ月かかりました。

私の元上司は、機械学習エンジニアはソフトウェアエンジニアであると同時に研究者でもあると言っていました。研究とソフトウェア エンジニアリングは同じではありません。システムが正常に構築され、バグがなかったとしても、研究はそこで終わりません。研究は終わりのないプロセスであり、目を離さずにいられる限り、常に新しい試みが見つかります。

モデルが学習している間、じっと座っていてはいけない

「モデルが実行中です!しばらく休ませてください!」データがどんどん大きくなるにつれて、使用される方法はますます複雑になります。完全なトレーニングプロセスには 2 ~ 3 時間かかります。

私はプログラムの実行中にこれを言い訳にして先延ばしにすることがよくありましたが、今では後悔しています。実行の終わり近くにプログラム エラーが発生したり、以前よりもスコアが下がったり、メモリ エラーが発生したり、最後まで気づかなかったその他の愚かなミスなど、いくつかの驚きがありました。

モデルが学習している間に、多くの意味のあることを行うことができます。

作業手順を事前に計画できます。プログラムが正常に実行され始めたら、別のアプローチを使用して次のプログラムに進みます。最初のプログラムの実行が終了すると、他のプログラムの実行を開始できます。新しいプログラムの実行中に、以前のプログラムの結果を評価および分析できます。したがって、以前のモデルに改善点が見つかった場合は、すぐに修正して再度実行することができます。

この時間は、上司や他のエンジニアと新しい方法やアイデアについて話し合うのにも最適です。つまり、時間を無駄にしないことです。

情報に基づいた選択を

場合によっては、異なる方法で得られた結果の違いがそれほど明白でないことがあります。この方法によって生成された結果が他の方法よりもわずかに優れている場合、この方法は最終的な選択として十分でしょうか? いいえ。多くの要素を考慮する必要があります。分析プロセスは、単一の観点から最善のアプローチを見つけることだけではありません。分析は長期的なプロセスです。

たとえば、F1 値がそれぞれ 0.95 と 0.96 である 2 つのスパム分類モデルがあるとします。 2 番目のモデルは精度が低く、再現率が高く、1 番目のモデルは精度と再現率のバランスが取れています。

この場合、スパムの分類をより適切に処理するため、最初のモデルの方が 2 番目のモデルよりも優れています。 2 番目のモデルでは、通常のドキュメントがスパムとして分類される可能性が高くなるため、スパムではないドキュメントがスパムとして分類される可能性が高くなり、これは非常に悪いことです。

考慮すべき他の重要な問題は、出力に関連する問題です。場合によっては、リソースと時間が限られている場合は、シンプルなモデルを選択すると役立ちます。これは、モデルのパフォーマンスが依然として良好であり、より複雑なモデルとそれほど変わらないことを前提としています。

データを混同しない

データは、モデルのパフォーマンスに影響を与える上で明らかに最も重要です。したがって、プロジェクトの開始時に、抽出する情報の種類、注釈のガイドライン、さまざまなデータ カテゴリ間のバランス、要件に応じたその他の重要な考慮事項など、詳細なデータセットを綿密に確立することが不可欠です。

特に NLP モデルの場合、アノテーターを使用してデータセットを構築する場合は、技術的知識と言語的知識の両方が同期していることを確認する必要があります。言語学者は、特定の注釈方法が既存のモデルで実行可能かどうか理解できない場合があります。同様に、エンジニアも言語を理解していないことがあります。

データが多ければ多いほど良いというわけではないことに注意することが重要です。どれだけ多くのデータをトレーニングしても、実際の状況をすべて効果的に反映できなければ無駄になってしまいます。さらに、データラベルの不一致も大きな問題です。

さらに、特にデータが大きくなると、トレーニング データ、検証データ、テスト データの構造と割合は各実験で同じである必要があります。モデルのパフォーマンスを確保するには、ケース タイプの分布も考慮する必要があります。トレーニング データを追加した後、モデルのパフォーマンスを比較するのに役立つ専用のテスト データがあると便利です。

ステップを接続する

エンドツーエンドのシステムを構築できることは、機械学習エンジニアとして必須のもう 1 つの重要なスキルです。さらに重要なのは、複数のモデルを同時に処理する場合、パイプラインを使用する方がはるかに便利だということです。データセットの読み込み、前処理と特徴の抽出、モデルのトレーニングと評価、予測の実行はすべて、単一の命令に簡素化できます。

一度で満足のいく結果が得られると期待しないでください。また、何かを長期間繰り返して行うことはストレスになることもあります。したがって、時間を節約し、ストレスを軽減するために、機械学習ワークフローを自動化することが重要です。

その他のフレームワークとツール

何か問題が起きると怒鳴られることもあります。システムを本番環境にデプロイする際にエラーが発生し、私は再びフラストレーションを感じました。したがって、展開に使用できるいくつかの実用的なフレームワークと効果的なツールを理解する必要があります。これまでに使用したフレームワークやツールをいくつか比較し、ニーズに応じて最も適したものを選択できます。

私にとって、Docker はデプロイメントにおいて非常に重要です。コンテナ内に複数のモジュールをデプロイするのに役立ちます。さらに、Tensorflow Serving も非常に使いやすく、トレーニング済みのモデルを予測リクエストに簡単に適用できます。

誰にでも理解できるように

自分自身のためだけでなく、他の人のためにもドキュメントを作成してください。他のエンジニアが実験を続けたい場合、または単にあなたのプログラムを使いたい場合、あなたが作成したドキュメントが役に立つでしょう。ドキュメントがあなたの分野以外の人にも読まれ、理解されることができれば、さらに良いでしょう。

優れたドキュメントには通常、ハイパーパラメータ設定、エポック、メソッド、データ、スコアなどの情報が含まれています。さらに、最初にコード全体を読まなくてもプログラムを実行するための自動スクリプトを他のエンジニアに提供することは役立ちます。

確かに、まだ学ぶべきことがたくさんあります。しかし、理解すべき最も重要なことは、失敗を恐れないことです。なぜなら、研究と実験自体が、試行、失敗、そして再試行のプロセスだからです。

<<:  調査レポート:2021年にAI機能を導入する企業が増加

>>:  データサイエンティストになりたいですか?機械学習を最初のコースとして受講しないでください

ブログ    
ブログ    

推薦する

たった 14 ステップ: Python 機械学習をゼロからマスターする (リソース付き)

Python は現在、機械学習で最も人気のある言語であると言っても過言ではなく、オンラインでも膨大...

ショック!自動運転車が人をはねたが、救助活動は失敗し、死亡が確認された。

太平洋標準時3月18日午後10時、米国アリゾナ州で、ウーバーが路上試験中に自転車に乗った女性と衝突し...

1000ステップ未満の微調整で、LLaMAコンテキストは32Kに拡張されました。これは、Tian Yuandongチームの最新の研究です。

誰もが独自の大規模モデルをアップグレードして反復し続けるにつれて、コンテキスト ウィンドウを処理する...

強化学習アルゴリズムの分類をさまざまな観点から理解します

この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...

浙江大学の「ホッキョクグマセーター」がサイエンス誌に掲載、ダウンジャケットの5倍の断熱効果

最近は寒波が次々と襲来し、ダウンジャケットは冬を過ごすための必需品となっています。浙江大学は、暖かい...

未来が到来: 脳コンピューターインターフェースの新たなブレークスルー: 人間の脳信号をテキストに変換する精度は 97%

4月23日、海外メディアの報道によると、カリフォルニア大学サンフランシスコ校の研究チームが開発した...

ロボット工学と自動化が建築の未来を形作る

建設分野では、ロボット工学は効率性と労働安全を向上させる能力があるため、注目すべきイノベーションであ...

ドローンのアフターサービス市場の改善が必要

最近、ニュースの表紙でドローンが人を負傷させたというニュースが報道され、ネットワーク全体の注目を集め...

ポストSORA時代において、CV実践者はどのようにモデルを選択するのでしょうか?畳み込みまたはViT、教師あり学習またはCLIPパラダイム

ImageNet の精度は常にモデルのパフォーマンスを評価するための主要な指標であり、ディープラーニ...

王小川の大型模型製作の秘密のレシピが初めて公開されました。5つのステップ、完成まで2か月

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

実用的! Python の日付と時刻の処理と計算: 時間を節約し、正確に計算します

Python の datetime モジュールは、日付と時刻の処理と計算のための豊富な機能を提供しま...

...

壁を登る毛虫のように、上海交通大学の新しいソフトロボットは水平にも垂直にも動くことができる

今日のロボットは、次のようなさまざまな形やサイズのものがあります。こんなのもあります:一見奇妙に見え...

プログラマー試験ノート4: ソートアルゴリズム

理由はよく分かりませんが、WORD ファイル内のすべての日付が変更されました。WORD マクロ ウイ...