見落とされがちですが、AIモデル開発の最初のステップは、求めている目的を満たすモデルとデータの組み合わせを決めることです。そのためには、AIモデルが何を出力するのか、どのような目的に最適化するのかを明確にする必要があります。
モデルのインプットとアウトプットを念頭に置くことで、モデルのトレーニングを成功させるために必要なデータセットの見通しが立ちます。最初のステップは、現在どのくらいのデータがあるのか、さらにどのくらいのデータを収集する必要があるのかを把握することです。データを追加で収集する必要がある場合、さまざまなトレードオフを考慮する必要があります。すなわち、追加のデータポイントを取得するためにどれだけのコストがかかるか、ラベル付けにどれだけのコストがかかるかということです(人間のラベラーに必要な専門知識のレベルに応じて変化します)。
これらの変数に応じて、初期トレーニングデータセットのサイズを見積もることができ、これは、より多くまたはより少ないデータを必要とするさまざまなトレーニング技術の開発コストと比較できます。例えば、データ増強、正規化、転移学習は、より小さなデータセットでの学習を可能にする技術であり、自己教師付き学習などの技術は、ラベルのないデータでの学習を可能にします。しかし、これらの技術はすべて、モデルの開発に必要な時間を増加させます。
データの状況を検討し、それを扱うためのモデリング手法を決定した後、エンジニアはモデルアーキテクチャの実装に着手します。つまり、データを取り込み、予測や判断などの出力を行うことができるアルゴリズムのことです。アルゴリズムを学習させるには、コンピューター上で反復学習プロセスを実行します。アルゴリズムに学習データを与え、その予測値と目的の出力値を比較し、エラー信号を算出します。この誤差信号から、誤差が最小になるまでモデルのパラメータを更新していきます。
モデルの学習が完了したら、モデルがデータを記憶していないか、役に立つ方法で一般化しているかを確認することが非常に重要です。そのためには、分析ステップが必要で、モデルが初めて見るデータのテストセットでの結果を計算します。また、副産物に対するモデルの頑健性も計算しなければなりません。そして、パラメータを調整したり、別のアーキテクチャで再度トレーニングしたりして、モデルを最適化する必要があります。
このようなプロセスを繰り返しているうちに、事前に想定していたことが間違っていたことに気づくことがあります。そのときは、学習データかアルゴリズムのどちらかを変更して、再度学習する必要があると判断します。つまり、人間の段階では、もうひとつ上のレベルの学習ループがあるということです。これは、テストを作ってコードを書き、その書いたコードが正しいかどうかをすぐに確認できる従来のソフトウェア開発プロセスとは大きく異なります。
これは、この種のモデルが以前に作られたことがあり、他のチームから学んだことを取り入れることができるのか、それともゼロから開発するのかによって異なります。場合によっては、モデルと環境とのインターフェースが人間によって制御されていたり、何らかのフィードバックループを含んでいたりする場合は、精度を多少犠牲にしても、開発期間を短縮することができるかもしれません。
計算機の観点からすると、この反復プロセスには⻑い時間がかかり、異なるアーキテクチャ、ハイパーパラメータなどでモデルを何度もトレーニングすると、非常に大きな計算能力が必要になります。さらに、機械学習エンジニアは、実験の結果を待ってから学習ループを進める必要がある場合が多いです。そのため、開発プロセスの予算を組む際には、研究開発にかかる⻑い時間と、モデルを何度もトレーニングするための計算コストの両方を考慮する必要があります。
Google DeepMindの元シニアリサーチエンジニアによって設立されたRecursiveは、各分野で世界レベルの人材を集め、成果へと繋げています。