IT業界職種研究

人気職種の仕事内容から身につけるべきスキルまで。現役のITプロフェッショナルが徹底解説!

  1. IT転職リーベル ホーム
  2. IT業界職種研究
  3. AIエンジニア・機械学習エンジニア
  4. AIエンジニアの仕事について

第2章:AIエンジニアの仕事について

はじめに

第2章となる今回は、AI・機械学習に携わるAIエンジニア(=機械学習エンジニア)の仕事について、私が経験したことを踏まえて解説したいと思います。

IT系のエンジニアと共通したテクノロジーやスキルを使う場面が多いのですが、プロジェクトにおける役割や立ち位置が異なっています。事業におけるAIの役割や性質により、従来のシステム開発とは違う毛色のプロジェクトになる傾向が強いためではないかと私は見ています。

それでは、AIエンジニアの仕事について述べて参りたいと思います。

上流プロセスから参加する技術的参謀

AIエンジニアは、言われたとおりにシステムを組みあげるという仕事のスタイルではなく、上流プロセスから参加して、プロジェクトの方向性の策定に踏み込むことが多くなります。

それは、AIはどういった使い方をすればよいか、AIの限界はどこにあるかといった、AIの性質を踏まえて企画・設計をしなければ、プロジェクト自体が破たんするリスクが高くなるためです。現在のAIのテクノロジーでできる範囲を逸脱するような、ちょっと未来的な夢とロマン溢れる要件を盛り込んでしまうと大変です。開発が進んでからAIテクノロジーそのものの限界にぶつかり、プロジェクトの失敗、または大幅な軌道修正(=目標レベルの大幅な引き下げなど)をせざるを得ない状況に陥ります。

ビジネス上の課題に対して、AIをどのように使えば解決できるのか、プラン・アイディアを立てることがAIエンジニアの役割として大変重要なものとなります。そのため、確実性の高い解決方法、開発方法、プロジェクトの目標を定めるべく、上流段階からしっかりジョインして、発言・提案をすることが求められます。実現不可能または非常に大きなコストがかかることが判明すれば、プロジェクトのロードマップそのものを改定する必要が出てきます。技術や理論だけ分かっていればそれでよい、というわけにはいかない立ち位置です。

ビジネス的、マーケティング的な面もある程度考慮した上で(=具体的には会社やプロジェクトが置かれている状況を踏まえて)、専門家として現実的な解を提案することが求められます。すなわち、技術的参謀としての役割がAIエンジニアには求められるのです。

【コラム】現在のAIテクノロジーの限界

五感に基づく感覚的な判断、いわば感覚的知性というべきものについては(画像の認識、匂いの認識、音声認識など)、今のAIでかなりのことが実現できるようになっています。こうした感覚的知性を組み合わせることで、擬似的に複雑で高度な判断をさせるというのが、現実的なAIソリューションになります。

その一方、現時点では人間と同等の汎用的な思考、主体的な意思を持った思考を実現することはできません。最近のニュースで「東ロボプロジェクト(=AIが東大受験に合格することを目指すプロジェクト)」が、挫折したことがニュースで大きく報じられました。今のAIでは、人間が持つ常識や、空気を読むといった高度なロジックが実現できなかったのです。言い換えれば、それだけ人間の思考は、ほかの動物と比べても圧倒的に高度で複雑ということです。

AIテクノロジーは日進月歩のスピードで発達してはいるので、いずれ新たなブレイクスルーが生まれる可能性はあります。数年後には新しいパラダイムのAIテクノロジーが登場して、状況が一変しているかもしれません。

データに直接目を通す

第1章でも述べたように、AI、特に機械学習に基づいたAIは、データによって性能が大きく左右されます。そのため、早い段階で提供されるデータに直接目を通し、どういったアプローチが良いのか、どのアルゴリズムを使うと良いか、ロジック全体はどうなるかといった俯瞰的な設計を考えます。

大量の数値やテキストの羅列に直接目を通すことで、データのくせや性質を把握でき、理にかなった作戦を立てやすくなります。ミッションで与えられたのが抽象的なレベルの要件であっても、生データに目を通すことで、おおよそ現実にとりうる作戦がおのずと絞り込まれていきます。与えられるデータが、テキストデータなのか、構造化されたレコードなのか、ログなのかによってもアプローチの方向が絞り込まれます。データの種類に合わせて、相性が良いアルゴリズムを選びます。

また、プロジェクトの要求に合ったデータの管理の仕組みを考えます。例えば、リアルタイムに近いレスポンスが求められるのか、あるいは深夜・早朝のバッチ処理をするだけで済むのかなど、要求に応じてデータの管理の仕組みも変わってきます。
AIの計算負荷は決して軽いものではありませんので、リアルタイムに近いレスポンスを実現するには別途いろいろな工夫が必要となります。計算処理の近似化であったり、計算結果のキャッシュ処理など、工夫の範囲は多岐にわたります。

AIエンジニアの仕事は、AIのアルゴリズムだけを考えればよいわけではありません。AIの処理に関連するシステム全体の振る舞い、データの流れ(入手、加工、保管)など、あちこちに目を配る必要があります。

そのためのヒントは、データの中に秘められています。ドキュメントでもらったデータ目録や仕様を読むだけで終わるのではなく、直接データに目を通して手がかりを集めておくことが重要となります。

データをどう管理するか

第1章でも述べたようにAI、特に機械学習に基づいたAIにおいては、利用可能なデータがあることが開発の大前提になります。どんなデータが、どれくらい手に入るのかによって、開発の方向が大きく変わります。

最も理想的な状況は、手入れが行きとどいたデータが豊富にある場合です。入力するデータの品質が高く、ボリュームも十分にあるため、AIにとって高い性能を発揮しやすい環境です。

この場合、シンプルでオーソドックスな設計で十分でしょう。不足するデータを補うため特殊な処理やサブシステムを開発せずに済むので、出来上がったシステムは安定稼働しやすく、トラブルが起きた時も対処しやすいシステムになります。ただし、そうした理想的な状況は、データを集める時点からAI導入を想定して、明確なビジョンのもとに事業を運営している場合など、現実ではなかなかお目にかかれません。

現実で多いのは、データはそこそこあるが、特にきちんと管理してはいないというケースです。そのままではAIが利用できない状態のデータであることが多いため、どのようにデータを管理し、加工するのかというところから設計します。AIを使った本命部分の処理よりも、AIに流し込むデータをどうやって取り寄せて、どのように保管し、どのように加工するのかというところに力を入れて考えます。
データサイエンスでいうところの「前処理」にあたります。この「前処理」の課題が解決できれば、問題の大半は解決したも同然とされるほど、「前処理」は重要であり、なおかつ手ごわく泥臭い工程となります。

私が経験した案件から、例をひとつ挙げたいと思います。
自然言語処理系の案件でしたが、解析対象となるテキストデータが、複数のデータ供給元からかき集める必要がありました。各データの供給元ごとにデータ構造も異なり、取得するための手順も異なります。圧縮ファイルを転送してくれるケースもあれば、相手先のAPIサーバーに接続して個別に取得するケース、APIが無いのでスクレイピング処理を利用してアクセス制限をされたサーバーからテキストデータを抽出するケースなど、多岐にわたりました。

結果的に、データ供給元ごとに対応するサブシステムをあちこちに開発することになりました。そして、データを集めてきたら、汎用化したデータ構造で設計したテーブルに集約し、AIからアクセスできるようにします。
データをとってくる処理だけで、なかなかの工数を必要としました。

しかし個人的には、規格も構造も不統一で、カオスな状態のデータを、一つ一つ交通整理してきれいに区画整備すると、すがすがしい気持ちになります。精神的に健やかなコンディションとなり、そこから先の本命処理であるAI部分の開発が楽しみとなります。

AIの性質を踏まえたロジックの設計

AIは、従来の情報処理システムとは異なり、応答の確実性、つまりルールに従ったデータを入力すれば100%仕様通りの結果が返ってくるという性質を持ってはいません。仕様通りに整備されたデータをインプットしても、100%の保証など存在しないわけです。あくまで確率の話であり、例えば80%や90%の確率で正しい予測が得られるという話になります。しかも、どの応答が当たりで、どれが外れなのかはわかりません。言葉を選ばずに言えば、ロシアンルーレットです。

その代わりAIには、データを入力すればするほど、能力が上昇するという性質があります。RPGゲームでいうところの、経験値を積んでレベルアップという概念に相当します。
従来のシステムではロジックは固定であり、仕様の範囲を外れた処理はできません。一方、AIは100%の確実性がない代わりに、データを入力して学習させることで、認識できる範囲が広がり、判定精度が向上するといったことが可能です。

従来のシステムとAIの間には、まさに古典力学と量子力学ぐらいパラダイムの違いがあります。

そのAIの性質を踏まえて、ロジックを組み立てる必要があります。さらには必要に応じて、要件自体も調節します。
例えば、従来型のシステムの要件のように、100%の確実性を求めるような要件は、AIの本質とはかけ離れたものですので、要件を現実に即したものに調節する必要があるのです。

AIを組み込んだシステムを作るのであれば、学習能力を持たせる設計はすべきでしょう。すなわち、追加データを投入し、AIに学習させるための仕組みを持たせるのです。
手間がかかりすぎてデータを入力するのが億劫になるようでは本末転倒なので、効率良くデータを入力するための管理画面やツールを準備することも有効な手段です。オペレータの負荷を軽減するツールを設計することもAIエンジニアの腕の見せ所です。

まとめ

私が経験した範囲から、AIエンジニアの仕事について述べさせていただきました。
体系立った内容というよりは、重要と思われる部分を抜粋してご紹介するという形になっています。AI自体が現在進行形で急速な進化をつづけているテクノロジーであり、AIに携わる仕事のスタイルも同様に変化し続けてゆくでしょう。
私が述べたのはあくまで現時点におけるスナップショット的なものであり、3年・5年と経過すればAIを取り巻く仕事のスタイルも大きく変わっている可能性が十分あります。

注目のキーワード: