こんにちは!
株式会社フォトラクション デジタルOpsグループでプロダクトマネージャーをしている若井です。
私の所属するデジタルOpsグループは、AI技術であるかどうかに関わらず、様々な技術を駆使して、建設BPOメニューにおけるオペレーターの作業自動化・効率化のためのシステム開発や研究開発などを担っています。
今回は、AI技術を用いた開発について、これまで経験してきた観点から、どんな特徴があるのか、チームの雰囲気を交えて紹介します。
AI開発の特徴
1.不確実性
モデル精度の不確実性
AIプロジェクトは、開発するAIモデルの精度が読めず、それによってどのように学習するか、他の工夫を施して着地させに行くかなどと、次の工程の選択肢が状況に応じて変わります。
また、100%完璧なAIを作ることは技術的に困難であり、最終的なAIモデルの精度によって、利用方法に対して柔軟に最終的な仕様を変える必要があります。
開発工数の不確実性
上記によって工程が変わるということは、進捗も大きく変動するため、予め定めるスケールジュール通り進めることはとても難易度が高く、常に開発スケジュール調整しつつ今やるべきことそうでないことの見極めがとても重要になります。
2.必然ゆるアジャ (ゆるいアジャイルの略)
週1~2回の定例
開発したAIモデルの精度は、定例の中でチームで共有し、エンジニアをはじめチーム全体で、精度改善のための仮説や意見を出し合い、次の学習や前処理、後処理などへの施策を決定したりします。
AIモデルの学習時間は長く、開発期間はもちろん、コストやGPUなど使えるリソースにも限りがあり、その中で何を試し実行するか、試す価値の高い(優先度の高い、費用対効果の高そうな)施策から試行していく必要があります。
そのため必然的にゆるアジャになります。(※去年のアドカレで田中さんが提唱したゆるラム(=ゆるいスクラム)なるもの)
開発精度によって変わる施策
まず前提として、開発前に目的とする機能に応じて期待する精度の水準は異なります。例えば、概算見積に利用するAIであれば8,9割程度の精度で良いかもしれませんが、正式見積の場合は完璧である必要があるなど、同じ90%の成果でも用途に応じて許容できる範囲は異なります。また、一度やってみないとどの程度の精度がでるのかどうかは未知に近いため、想定と異なった場合の切り替えや事前にあらゆる予想をしておきプロジェクトの方向性をコントロールすることはAI系のプロジェクトマネジメントにおいてとても重視すべき点だと感じています。
また、開発したモデル精度に応じて、追加学習するのか、別のアプローチで補填しにいくのか判断する施策も異なってきます。
3.必要なスキルセット
ハードスキル
AI・コンピュータービジョンなどの技術知識
AIエンジニアといってもDeepLearingや機械学習についての理解があればいいというわけではなく、目的を果たすにはどのような技術を選定するか(AIを使わなくても十分かどうか)という視点が必要です。
AI(教師あり)であればどのようなモデルを採用し、どのようにチューニングして学習させていくか(データ処理や損失関数、最適化関数など)を判断していく能力が必要です。
ドメイン知識
特に弊社のような建設に特化したAIやその他自動化のための機能開発を行うチームでは、当たり前のことですがドメインの知識は必要不可欠です。
例えば、医療や金融、製造業などにおけるAIまたは機械学習エンジニアには高精度かつ汎用性の高い効果的な機能開発にはドメインの知識は非常に重要です。
その点において、弊社のAIを開発するチーム(デジタルOpsグループ)は建設業出身者または大学で建築を専攻していメンバーが大半で、図面の解読や建設プロセス全体の理解などに通常AIエンジニアに比べて長けているのが特徴的です。
ソフトスキル
- 問題解決力
- 常に課題や問題を見つける姿勢で物事を見て、その課題を一つ一つ解決していくためにPDCAサイクルを進めていくことは、DeepLearnigなどの場合技術的限度はあるにしても、例えば不得意データを集中的に学習データとして利用するなどで高精度で汎用的な機能の実現に向かいます。
- 柔軟性
- 開発進捗と状況に応じた施策の決定が必要です。
- 特定の技術などの手段にとらわれずにあらゆる手法の中から最適な手法を導き出すことはとても重要で、それらを事前に調査する能力も必要です。
- 問題解決力
デジタルOpsチーム紹介
AI開発において、上記のような力が求められますが、幸いにも私は恵まれた環境でPMをしており、対処や方向性についてリードしてくれる心強いメンバーに囲まれています。
- リーダー:要件定義も開発も方向性を支えてくれ、最終的に泣きついたら絶対大丈夫な解決策をもらえて心強いです。
- PM:普段の仕事はBPOメニューの要件定義、プロジェクトの進捗管理をしています。
- エンジニア:技術面はもちろん、PMの視点(建設の理解や運用後を考慮した仕様)も意識して、解決策やアイデアを出してくれて心強いです。
- QA:AIワークの品質を保つためデータ作成やテストケース、テスト自体に注力してくれて、いつも助けられてます。
こんな感じで色んな人に支えられながら、密接にコミュニケーションを交わしながら、開発していく雰囲気です。(というより、一方的に恵んでもらっているPMの構図でしたwww)
実際は、AIを使わない開発も多い
AIを使わなくても、画像処理技術で十分な精度が出る場合や、そもそもとして精度が伴わないシステムを作るときはAIを使わないプロジェクトも多々あります。
AIが適切かどうかは、許容される精度や、学習できるデータ量、開発工数、コストなど、あらゆる判断材料から決めます。
大事なのはAI(DeepLearnigや機械学習など)という技術は、建設業をスマートにする上であくまで手段に過ぎないということです。
なんでもかんでもAIを使おうとすることは、芝刈り機があるのにわざわざチェンソーを使って芝を刈っているようなものですね。
以上、デジタルOpsの開発雰囲気とAI開発の特徴について、お伝えできましたでしょうか?