機械学習エンジニアを目指そうと思ってるけど、仕事内容やどのようなスキルが求められるのか分からない…という悩みを解決します。機械学習エンジニアとは機械学習アルゴリズムの実装・運用・環境構築を担う職種です。機械学習は「予測の誤りをなくすこと」が難しいため、場面によっては仕事がなくなるという声もあります。今回は、機械学習エンジニアの定義や業務内容・必要なスキルや適正・年収などを解説します。
1. 機械学習エンジニアとは?
機械学習エンジニアとは何を指して、どんな仕事をしているのでしょうか。
今回は、
- 機械学習エンジニアの定義
- 機械学習エンジニアの業務内容
- 機械学習エンジニアとデータサイエンティストの違い
上記について、それぞれ詳しく見ていきましょう。
1.1 機械学習エンジニアの定義
機械学習エンジニアは、機械学習アルゴリズムの実装・運用・環境構築を担う職種です。
主な役割は「アルゴリズムやソフトウェアの開発・実装」ですが、機械学習の導入目的や各企業の状況によってはデータアナリストやデータサイエンティストと同様の働きを期待されることもあります。
データアナリストについては、以下の記事も参考にしてください。
1.1.1 AI・機械学習モデルの選別・実装・開発
機械学習の導入目的に応じたAI・機械学習モデルの選別を行い、機械学習モデルのアウトプットイメージを策定して実装や開発を行います。実装や開発を繰り返しながら、モデルの機能や性能を向上させていきます。細かなところでは、クラウド環境と連結させるためのAPI開発や、データの集約や更新を自動化するためのバッチプログラム開発なども行います。
1.1.2 データ収集・整形
機械学習とは、「学習」によって機械が知見を獲得するかのように精度を向上させながら、「分類や認識」「予測」といった処理を行う人工知能の一種です。
学習の種類は、「教師あり」「教師なし」「強化学習」の3つがあります。
- 教師あり
事前に用意したデータを読み込み、「入力」と「出力」の関係を学習するアルゴリズムです。事前に用意された「正解」があるため、教師がいる状態に例えられます。 - 教師なし
事前に正解が用意されておらず、入力データからさまざまなデータの特性や知見を獲得します。 - 強化学習
人間がデータを用意せず、アルゴリズム自体が環境を予測して、必要なデータを取得し学習を進めます。
上記の教師あり・教師なしは事前にデータ収集と整形が必要です。
機械学習に用いるデータを精査し、実際にデータに対してタグ付けを行い(アノテーション)、教師データを作成していくフェーズが必要となります。
1.2 機械学習エンジニアの業務内容
機械学習エンジニアの業務内容は以下の5つのフェーズに分けられます。
- 要件定義
- データの下準備・整形・加工
- 機械学習の実施
- 学習モデルの精度評価
- アルゴリズムやモデルの研究・開発
それぞれ詳しく見ていきましょう。
1.2.1 要件定義
まずは要件定義です。
ビジネス上の課題があり、それらを解決するために機械学習の導入を検討することが多いです。
その際には
- Why
「(ビジネス上の)問題点を明確化する」 - What
「どの指標を改善すれば問題点が収束するかを明確化する」 - How
「その指標の改善方法に、機械学習を使用する以外に方法はないか検討する」
上記3点を検討します。
機械学習案件では人間がすべて明確なアルゴリズムを仕様として決めているわけではないので、品質の不確実性が必ずつきまといます。機械学習モデルが90%の精度を達成したとしても、10%の不確実性によって「機械学習には効果がない」という結論が見出されるとプロジェクトの価値そのものが評価されない状態となります。よって導入目的とKPIを明確化し、プロジェクトの参画者がKPIについて合意している状況が必要です。
1.2.2 データの下準備・整形・加工
実際に機械学習の対象とするデータを精査します。十分なデータ量があれば、アノテーションを行う「学習できる量に相当するデータが揃っているか」の他、
- データが構造化されているかどうか
- セキュリティ的に問題があるかどうか
- データの加工にコストがどれだけかかるか
- アノテーションコストがどれだけかかるか
などをみていきます。
1.2.3 機械学習の実施
続いて、実際に機械学習を実施します。
採用する機械学習モデルを決め、実際にモデルをトレーニングし、実際にできたモデルに対して結果の正答率などを見ます。採用する学習モデル決めでは、手元のデータが「どのような種類のもので」「どのような特徴を持ち」「どのようなことを検証したいのか、説明可能である」ことが重要です。
一方で、膨大なデータを扱う際には特徴量が少ないデータを扱わざるを得ないこともあり、使うモデルを絞り込んだ後は、絞り込んだ中からある程度の目安に従ってモデルを選び、実際に動かして比較してみるということが一番大事です。
1.2.4 学習モデルの精度評価
学習モデルの精度評価をします。具体的には以下の手順で行います。
- 学習モデルを評価する
- 作成した学習モデルの精度を評価する工程
- 解決した問題に対する結果が得られるかをモデルを 使って判断する
ここでいう「精度」はあらゆる問題に対して一定量 の結果が得られるようにならないといけないので、特定の問題にのみ適用できるような汎用性のない モデルは適用できません。
1.2.5 アルゴリズムやモデルの研究・開発
機械学習では、学習に使用されるデータがアルゴリズムよりも重要と言われます。
データが不適切であった場合は、本来必要とする結果を一向に出してくれません。現在では、新たなアルゴリズムや機械学習モデル、また各種開発に役立つフレームワークなどに関する研究も盛んであり、技術の発達スピードが早い業界でもあるので、キャッチアップするための研究は重要です。
良いデータを使ってある程度の成果を出しても、「さらに良い方法があるのでは」と考えてしまうケースもあります。実際に他のアルゴリズムを利用してみるとさらに良い結果になることもあります。そのため、アルゴリズムも大切であり、「目的に合ったデータとアルゴリズム」の兼ね合わせを意識してキャッチアップを繰り返していく姿勢が重要です。
1.3 機械学習エンジニアとデータサイエンティストの違い
機械学習エンジニアとデータサイエンティストの違いは以下の通りです。
- 機械学習エンジニアは「システム設計」段階から必要とされる
- データサイエンティストは機械学習モデルの構築やデータを利用して「精度」を上げていく仕事がメイン
それぞれ詳しく見ていきましょう。
1.3.1 機械学習エンジニアは「システム設計」
機械学習エンジニアはシステムの設計段階から必要とされるポストです。機械学習を利用したサービス開発や機能改善を行います。また機械学習に必要となる各種インフラの整備やAPI開発など、アルゴリズムや機械学習モデルそのものに関すること以外の開発も引き受けます。
企業によっては実際の現場では機械学習エンジニアでありながらデータサイエンティストが担う領域の業務をこなしていることもあります。
1.3.2 データサイエンティストは「モデルの精度向上」
データサイエンティストは機械学習モデルの構築やデータを利用して予測モデルの「精度」を上げていく仕事がメインです。
例えば画像に「犬」が含まれるかを判別する予測モデルであれば、10枚中8枚正解したなら正答率は80%という結果になり、さらに精度を上げるためにはどうすれば良いのかを考えていきます。
また、AIを採用した融資審査システムを考えてみましょう。
精度が「良い」とある程度のオペレーションの自動化が可能です。しかし精度が「悪い」とAI任せにすることはできません。このように機械学習を使う現場では、意思決定に「精度の良し悪し」が重要な影響を与えるので、いかに「精度」を高めていくかが重要課題になっています。
2. 機械学習エンジニアに必要なスキル・適正
機械学習エンジニアに必要なスキル・適正は以下の4つです。
- 統計スキル
- プログラミングスキル
- 仮説構築力
- ディレクション能力
機械学習エンジニアは、データアナリストやデータサイエンティストと役職や仕事内容が一部被るケースもあり、それらの職種と求められるスキルは比較的似ています。
2.1 統計スキル
機械学習とデータ分析の前提条件として以下のスキルが必要です。
- 推定、検定、回帰、判別分析
- 推定と仮説検定
- 単回帰分析、重回帰分析
これから機械学習エンジニアを目指し、データ分析や統計を始めるならば、代表的な統計・機械学習手法を実行しましょう。
統計解析や時系列解説を学ぶためにRやPythonを学習したり、大学生向けの「微分積分」「線形代数(行列)」などの本を用いて手を動かしながら解き進めていくことをおすすめします。
2.2 プログラミングスキル
R、Pythonなどによるデータ解析のためにプログラミングスキルも必要です。
機械学習エンジニアになるためには、統計解析や時系列解析を学習する必要があります。統計解析とは、「統計学的理論に基づいて蓄積されたデータに対する分析」を指し、時系列解析とは「気温や地震、株価の変動といったような時間とともに変化するデータに対する分析」を指します。
Rは統計解析に強く、時系列解析については、forecastパッケージなどR言語の方がパッケージのラインナップが圧倒的に豊富です。アンケートデータの解析結果から統計的に有意かどうかを読み解くのに便利なため、多くの調査会社ではR言語が採用されています。Pythonは機械学習を通じた「予測」に強みを持ちます。
2.3 仮説構築力
課題発見のための仮説構築、課題解決のための仮説構築をそれぞれ行うスキルも必要です。
仮説構築力とは情報収集や情報分析より前に、仮説を立てることです。情報の少ない段階から問題の全体像や結論を考える思考スタイル、思考習慣を「仮説思考」といいます。この仮説思考のスキルが身についていると、仕事はスムーズに進み、正確性も増してくるでしょう。
2.4 ディレクション能力
通常のシステムとは違い、テストまたは本番環境においてどうしても不確実性がついてきます。そのため、機械学習のプロジェクトを遂行する場合、プロジェクトの参画者やクライアントの期待値をどのように調整するか、機械学習の導入目的やKPIをどのように設定し、理解してもらうかが重要です。
例えば機械学習の精度が上がらないとして「いずれがんばりつづければ精度はあがるだろう」とぼんやり認識していると、いつまでも成果が出ないということもあります。プロジェクトの不確実性をきちんと周囲に認識してもらいつつ、人力によるミスの補填や、最悪の場合は「撤退」も含めたディレクションが必要で、高度なディレクション能力が求められます。
3. 機械学習エンジニアの業務の進め方・コツ
機械学習エンジニアの業務の進め方・コツとしては、以下の4つを意識するようにしましょう。
- データベース操作やプログラミングなどテクニカルスキルは「前提」
- PDCAサイクルを高速に回すことを意識する
- 業種ごとの専門的な知識も学ぶ
- クラウドや各種インフラの知識も重要
それぞれ見ていきましょう。
3.1 データベース操作やプログラミングなどテクニカルスキルは「前提」
RやPythonのライブラリを活用したビッグデータの活用は前提です。Web APIとスクレイピングの利用方法を学び、データを整形したり、自分が立てた問いに対して、しっかりと答えが出る答えを分析によって導き出すことが重要です。
WebAPIとスクレイピングは質の良いデータを得るために重要で、データそのものに欠損や低品質のものが混在していたり、母数が少ないと意味はありません。そのため、素材である「データ」の収集こそ、重要度が高いです。
「分析の難易度」よりも「データの質」が何より重要ということを意識しましょう。よってWebAPIやスクレイピングができる程度のスキルや、RやPythonのライブラリ活用、DB操作などは前提となります。
3.2 PDCAサイクルを高速に回すことを意識する
PDCAサイクルを高速に回すことを意識すると良いでしょう。
PDCAサイクルとは以下の順番を繰り返すことにより、業務改善を目的とした行動のことです。
- Plan(計画)
- Do(実行)
- Check(評価)
- Action(改善)
どのモデルが最も良いかを判断するのは簡単ではなく、ある程度仮説を立て、モデルを選定したら「実際に動かし、アウトプットを比較してみる」工程が必要となります。
機械学習モデルの絶対的な選定基準を設けるのは難易度が高い業務であり、絶対的な評価基準を固めるというよりは、複数のモデルを実際に動かしながら比較してみる方が良いです。
3.2.1 機械学習アルゴリズム選定に役立つチートシート
機械学習アルゴリズム選定に役立つチートシートとしては2つあります。
初心者レベルのデータサイエンティストの方には、SAS Institute Japanがおすすめです。
3.2.2 仮説検証のスピードも重要
仮説検証のスピードも重要です。機械学習は負荷の高い処理であるため、処理スピードはGPU/CPUの処理性能にも大きく左右されます。処理時間が3倍以上変わるケースも珍しくありません。
機械学習エンジニアには、機械学習を行うインフラそのものの選定や見積もりも求められます。
3.3 業種ごとの専門的な知識も学ぶ
データのアノテーションには、各データにどのようなタグをつけるべきかの判断を行う能力も必要です。
アノテーションとは、元々「注釈」の意味であり、あるデータに対してタグやメタデータと呼ばれる情報を追加することで、意味を持たせることをいいます。
そのため、業種ごとの専門的な知識がある方が望ましく、最低限、アノテーションを行う各担当者とコミュニケーションが取れる程度の知識があることが望ましいです。
3.4 クラウドや各種インフラの知識も重要
クラウドや各種インフラの知識も重要です。
前述の通り、GPU/CPU性能に大きく処理時間が左右されます。近年は「GPUクラウド by GMO」など、クラウド経由でGPUを使えるサービスも増えており、物理的制約がある中でもGPUを使うことがしやすくなっています。クラウドや各種インフラの知識をきちんと持ち、機械学習の環境構築をインフラまで含めて行うことが業務効率化につながるでしょう。
4. 機械学習エンジニアはなくなる?不要な仕事?
機械学習エンジニアはなくなる・不要な仕事なのでしょうか。詳しく見ていきましょう。
4.1 定義が曖昧
データアナリスト、データサイエンティストやデータエンジニアなどとの役割分担が曖昧で、明確な線引きがないため企業によって呼び名が変わっていたり、混乱を招くようなことも少なくはありません。
実際に「機械学習エンジニアを雇用すればさまざまな問題が解消すると思っていたのに、実際はそんなことはなかった」という、雇用者の願望と人材の持つスキルの不一致が問題視されるようになってきてもいます。そのため、定義をより明確にしていくことが今後は重要になります。
4.2 機械学習を使わなくても良いなら「無理に採用する」必要はない
機械学習を使わなくても良いなら「無理に採用する」必要はありません。
機械学習プロジェクトは「予測の誤りをなくすこと」が難しいです。精度はデータセットによって変化するため、特定のデータセットの評価値はあくまで参考値にしかならず、その評価結果をモデルが常に担保する数値ではなく、1サンプルのデータがうまくいったからすべてのデータがうまくいくということはありません。
目標精度が担保される正確性の高い予測が必要な場合、機械学習以外の手法の採用も検討すべきで、機械学習を使わなくても良い内容ならば無理に採用しないことも必要になります。
2020年現在は機械学習はバズワードという側面も強く、徐々に「不正確さ」というリスクへの認識が広まると「必要な時にピンポイントで採用される手法」という認識になっていくと考えられます。
よって「とりあえずなんとなくやってみる」対象としての機械学習は「なくなる」可能性があります。
4.3 「データをどのように活用していきたいか」が重要
「データをどのように活用していきたいか」も重要です。
あるデータセットのアウトプットが90%の精度を出したとしても、別のデータを加えると精度が下がるということが恒常的に機械学習では起きる可能性があります。
そのため「不確実性の高いデータを、何に活用したいのか」を事前に擦り合わせておくことが大切です。
5. 機械学習エンジニアの給与の目安
機械学習エンジニアの年収幅は400万~1300万です。
近年機械学習エンジニアの需要は高まっており、人材不足による売り手市場になっています。大手企業では高額な年収を提示しており、経験年数やスキル・勤務先によって年収の幅が大きく異なっています。
出典:AIエンジニアの年収や給料について詳しく解説します!|平均年収.JP
6. 機械学習エンジニアになるには
機械学習エンジニアになるには、まずは統計学の基礎とプログラミングを学びましょう。
長期的な視野で考えるのであれば、まずは初心者でも就きやすいエンジニアとして下積みを重ねていくという考え方もあります。
機械学習エンジニアに向いているかどうかを判断するために、実際に簡単なAIアプリを作ってみるのも良いでしょう。
初心者向けに無料&簡単に作れるAIアプリをご紹介します。以下の記事を参考にしてください。
7. まとめ
今回は、機械学習エンジニアの定義や業務内容・必要なスキルや適正・年収などを解説しました。機械学習になるには、統計学の基礎とプログラミングを学ぶことをおすすめします。近年機械学習エンジニアの需要は高まっており、覚えることはたくさんありますが、未経験からでも目指す価値のある職業です。本記事を良く読んで、機械学習エンジニアについて理解を深めて頂ければ幸いです。