プログラミング

【AIエンジニアとは】現役AIエンジニアの業務内容【人工知能】

プログラミング

AIエンジニアの業務内容、またどんなスキル・能力を使っているのかを知りたい方向けです。AIエンジニアのはしくれになって約2年の私の業務を紹介します。

AIエンジニアを目指す方の参考にでもなれば幸いです。

スポンサーリンク

AI(人工知能)とは?

Artificial Intelligenceの略で、日本語では人工知能といいます。
AIの中に機械学習、さらにその中に深層学習(ディープラーニング)があります。今どきの使われ方をする「AI」という単語は深層学習を指すことが多いと思います。私も厳密な話をしてない限りは言いやすいAIを使いがちです。

実はAIという単語の意味はかなり広いです。例えばマリオカートのCOMやRPGゲームの敵キャラのターン毎行動の選択処理もAIと言えます。
ただ今の時代にAIといわれてゲームのコンピュータを連想する人は少ないでしょう。

スポンサーリンク

AIエンジニアとは?

AIに携わるエンジニアを指しますが、はっきりとした定義はないです。
個人的には大きく分けて以下の2つに分類できると思います。

  1. AIを駆使して何か新しいものをを創造する人(AIを使う人)
  2. 独自のAIを作り出す人

私は2つ目に該当します。

スポンサーリンク

AIエンジニアの業務内容(私の場合)

私はある用途に使用するためのオリジナルのAI(深層学習モデル)を作成しています。
AIは、データを入力すると推定値を出力するものです。

AIの入力データ、出力データの形態を決める

深層学習AIは入力データを処理して推定値を出力します。
その入力データがどのような形態であるか(画像なのかテキストなのか数値の塊なのか)を把握してAIに入力させるためのデータ変換処理(前処理)は何をすべきかを決めます。
また出力データはどのような形態が活用しやすいかを考え決めます。

AI(深層学習)の骨組みを作る

深層学習フレームワーク(TensorFlow、PyTorchなどに代表される)を用いてニューラルネットワークをpythonで作成します。よく見かける下のような図をプログラムで作成するのです。

一つ一つの球をニューロンといい、このニューロンのつながりの集まりをニューラルネットワークと呼びます。人が決めるのは、層の数一層あたりのニューロンの数層の種類あたりです。

学習用データを収集、作成

AIを学習させるためには大量のデータが必要です。
しかもデータだけではなくそれが何であるかという正解情報も必要です。
つまり「データ+正解情報」のセット(データセットといいます)をたくさん用意する必要があります。
収集したデータに正解情報をくっつける作業をラベル付けデータセット化なんて言ったりします。

データ収集とラベル付けがオリジナルAIを作成するうえで一番めんどくさいです。作業的過ぎて面白味も何もないですからね。世の中にはラベル付けバイトもありそうな気もします。

ラベル付けを自動化すれば楽そう!と思ったそこのあなた、それができればオリジナルなAIはもうできていますよね。地道にやるしかないのです。

AIを学習させて精度を評価

作成したAIにデータセットを与え、学習・精度評価を行います。
まず与えたデータセットが2つに分けられ、片方を学習用、片方は精度検証用にします(比率は7:3くらいで)。
AIは学習用データで学習精度検証データで精度検証を指定した回数だけ繰り返します。学習した内容は継続されるため、基本的には学習回数が増えれば増えるほど精度はよくなっていきますが、多すぎたり、データセットに不良があると過学習(精度が悪化する方向への学習)が発生します。
この際指定する学習回数をエポックといいます。
横軸:エポック数、縦軸:精度のグラフを描画し、学習の過程(曲線の形状)と最終的な精度を中心に評価します。

エポック数と使用しているPCのスペックにもよりますが、AIの学習中は長い時間待たされます。なので人にとってはちょうどいい休憩タイムになります。

どのようにして精度の改善をすべきか考える

ここにAIエンジニアの難しさが詰まっています。よく言われますがAIの中身はブラックボックスなので、ここをこうすればよくなりそうという傾向がはっきりと掴めません。
精度を向上させるための選択肢としては以下選択肢があります。

  • データセット(データ数)を増やす
  • データセットの見直し(ラベルが適切か、学習にふさわしくないデータが混じっていないか)
  • ネットワークの修正(層数の変更、ニューロン数の変更、構造の変更)

より良い改善を行うには、数学的な知識AIの内部的な理解(今回の場合は深層学習の仕組み)、そしてAIエンジニアとしての経験値が必要だと感じています。

職場の天才は「あー、今度はこんな感じでやってみれば?」とぽろっと提案してきて、実際にやってみると精度が上がってびっくりなんてことがありました。数学的センスと経験の差を感じましたね。。

スポンサーリンク

最後に

今日AIエンジニアを目指す人は多いようですね。
ただ汎用性の高いAI(物体検知、音声認識など)はもうすでに世の中にたくさんあります。企業としても0から作るより買ったほうがメリットがあるので、それらの開発にかかわるのは難しいでしょう。
また私のように世界に一つだけのAIを作るとするとデータ収集が大変です。ここら辺があまり知られていない事実だと思います。

だた私はAIエンジニアを楽しめています。自分も周りも結果が読めないところが魅力なのでしょう。

ちなみに、まさかハード好きだった私が人工知能をやるとは思いもしませんでした。
ハズレのように見せかけて大当たり?だった私の配属ガチャの話は以下になります。

コメント

タイトルとURLをコピーしました