はじめに
AIの技術的な理解を深めながら、プロジェクトに効果的にAIを活用したいと考える傾向がエンジニアの間で強まっている。AIに取り組むにあたりまず、AIとは何か、AIが現在のワークフローにどのように適合するのかを考えるが、これに簡単な答えはない。「AIとは何か?」とGoogleで検索すると、技術的な内容も実にさまざまな、何百万もの検索結果が表示されるのである。
エンジニアにとってAIとは何か?
AIはモデルについて語られることが多いため、AIのモデル作成から始めるエンジニアは多い。そして、プロジェクトに数件取り組んだ後に、AIとは単なるモデル作成ではなく、データの準備、モデル作成、シミュレーションとテスト、展開を含む一連のステップであることを理解するのである。
機械学習やディープラーニングを行うエンジニアは、AIモデルの開発と微調整に多くの時間を費やしがちである。確かに、モデル作成は重要なステップであるが、モデル自体がゴールではない。実践的なAI導入において重要なのは、早い段階で問題を発見し、最良の結果を得るために、ワークフローのどこに時間とリソースを集中させるべきかを特定することである。
ワークフローの解説の前に、2つの重要な点を考えてみよう。
- 多くの場合、AIは大規模なシステムの一部に過ぎない。他のセンサーや制御、信号処理、センサーフュージョンなどのアルゴリズムを含む最終製品のすべての動作部分とシナリオにおいて、正しく動作する必要がある。
- エンジニアは、専門分野の知識というAI導入を成功させるスキルをすでに持っている。データの準備やモデルの設計のためのツールがあれば、AIの専門家でなくても、自身の専門知識を生かしながらツールを活用して開発を始めることができる。
AI駆動ワークフロー
ここから、AI駆動ワークフローの4つのステップを紹介し、各ステップがどのような重要な役割を果たすか理解していく。
ステップ 1: データの準備
データの準備は、AIのワークフローの中で最も重要なステップといえる。モデルを学習させるための入力として、ロバストで正確なデータがなければ、プロジェクトは失敗する可能性が高くなるからだ。もしモデルに「悪い」データを与えれば、良い結果は得られず、モデルが動作しない理由を解明するために多大な時間を費やすことになる。
モデルを学習させるためには、できるだけクリーンなラベル付きのデータを集めることから始める必要がある。これは、ワークフローの中で非常に時間のかかるステップでもある。ディープラーニングモデルが期待通りに動作しない場合、パラメーターの調整やモデルの微調整、何度も学習を繰り返すなど、モデルの改良に注目することが多い。しかし、入力データに注目する方が良い。つまり、モデルがデータを理解できるように、モデルに入力するデータを前処理し、正しいラベル付けを行うのである。
データ準備の重要性を示す例として、建設機械・設備メーカーのキャタピラー社が挙げられる。キャタピラー社では、様々な機械から大量のフィールドデータを受け取っている。この大量のデータは、正確なAIモデリングのために必要だが、データ量が膨大なため、データのクリーニングとラベル付けのプロセスは非常に時間がかかる。そのプロセスを効率化するために、キャタピラー社は自動ラベリングとMATLABとの統合を利用して、機械学習モデルに入力するためのクリーンでラベル付けされたデータを迅速に開発し、現場の機械からより有望な洞察を得られている。このプロセスは拡張性があり、ユーザーはAIの専門家になることなく、ドメインの専門知識を柔軟に活用することができる。
ステップ 2: AIモデリング
クリーンで適切にラベル付けされたデータが準備できたら、次はモデリング段階に移る。ここでは、データを入力として使用し、モデルがそのデータから学習する。モデリング段階の目標は、データに基づいてインテリジェントな意思決定を行うことができるロバストで正確なモデルを作成することである。この段階では、ディープラーニング、機械学習、またはそれらの組み合わせがワークフローに組み込まれる。
この段階では、ディープラーニング(ニューラルネットワーク)と機械学習モデル(SVM、決定木など)のどちらを選択するかに関わらず、分類、予測、回帰など、AIワークフローで使用される多くのアルゴリズムに直接アクセスできることが重要といえる。また、幅広いコミュニティで開発された様々な構築済みモデルを出発点や比較のために使用することもできる。
MATLABやSimulinkのような柔軟なツールを使うと、AIモデルの構築を反復的な環境で行うことができる。アルゴリズムや構築済みのモデルがあれば出発点としては役立つが、それだけでは完結しない。エンジニアは、例題を用いてこれらのアルゴリズムの使用方法を学び、特定の問題に対する最適なアプローチを見つけていく。MATLABは、AIモデルを構築するための複数のドメインにわたる何百もの例を提供している。
AIモデリングは、ワークフローの中の反復的なステップであり、モデルに加えている変更を追跡する必要がある。最も正確なモデルにつながるパラメーターを解明し、再現可能な結果を生み出すためには、実験マネージャーのようなツールを使って、変更を追跡し、学習の反復を記録することが重要である。
ステップ 3: シミュレーションとテスト
AIモデルは、より大きなシステムの中に存在し、システム内の他のすべての部分と連携する必要がある。例えば、自動運転のシナリオを考えてみる。対象物(歩行者、自動車、一時停止の標識)を検知するための知覚システムだけでなく、位置特定、経路計画、制御などの他のシステムと統合しなければならない。シミュレーションとテストの精度は、モデルを実世界に展開する前に、AIモデルが適切に動作しているか、他のシステムとすべてがうまく連携しているかを検証するための重要なポイントとなる。
展開前に求めるレベルの精度とロバスト性を構築するために、モデルがどのような状況下でも想定通りの動作をすることを確認しなければならない。
- モデルの全体的な精度は十分か?
- モデルは各シナリオで期待通りの性能を発揮するか?
- すべてのエッジケースをカバーしているか?
信頼性を担保するためには、想定するすべてのケースのシミュレーションとテストを行い、モデルが目標通りに動作することを検証しなければならない。Simulinkのようなツールを使用すれば、想定されるすべてのユースケースでモデルが想定通りに動作することを検証でき、費用と時間のかかる手戻りを避けることができる。
ステップ 4: 展開
展開の準備ができたら、次はターゲットとなるハードウェアである。つまりモデルを最終的に実装する言語で準備を行う。このステップでは通常、設計エンジニアが実装可能なモデルを共有し、そのモデルを指定のハードウェア環境に適合させる。
指定されるハードウェア環境は、デスクトップ、クラウド、FPGAなど多岐にわたるが、MATLABはどのようなシナリオでも最終的なコードを生成することができる。MATLABのような柔軟なツールがあれば、エンジニアは元のコードを書き直すことなく、さまざまな環境にモデルを展開することができる。
例えば、モデルをGPUに直接展開する場合を考えてみよう。コードを自動生成する機能により、ハンドコードによるコーディングエラーの可能性を排除し、GPU上で効率的に動作するように高度に最適化されたCUDAコードを生成することができる。
エンジニアがAIで成功するには
エンジニアがAIで成功するために、データサイエンティストやAIの専門家になる必要はない。エンジニアや科学者のために設計されたツール、AIをワークフローに統合するための機能やアプリ、AIの統合に関する質問に答えてくれる技術エキスパートは、エンジニアとAIモデルを成功に導くための重要なリソースである。最終的には、エンジニアが自分の得意分野に集中し、AIを導入するための適切なリソースを使って構築することができれば、ベストな状態となる。
関連リソース
[PR]提供:MathWorks Japan(マスワークス合同会社)