機械学習エンジニアと聞いて、皆さんはどのような職種をイメージするでしょうか?「機械学習のスペシャリスト」、「給料高そう」、「トレンドの分野だから求人も多そう」などではないでしょうか。しかし、日本ではまだ新しい職種であるため、具体的にはイメージしづらいのではないかと思います。
そこで、本稿では、求人情報の分析結果をもとに、機械学習エンジニアとはどのような職種なのか、どのようなスキルが求められるのかまで、その全容を詳しく解説していきます。
この記事の目次 [隠す]
機械学習とは
はじめに、機械学習の定義と、人工知能やディープラーニングといった概念との関係を簡単に整理します。この点に関しては多くのサイトや書籍でまとめられているため、十分にご存知の方は飛ばしていただいても構いません。
機械学習の定義
機械学習とは、機械にデータを学習させることにより、人が明示的にルールを与えなくても自律的に判断ができるようにする技術のことです。機械学習を活用することで、画像認識や音声認識などの、人間が感覚的に処理しており明示的にルールを設定することが難しい分野においても、機械が判断を下せるようになりました。
機械学習と人工知能(AI)、ディープラーニング(DL)の関係
人工知能(AI)は、機械学習よりも広い概念で、簡単に言えば「人間と同じような知能を有する(ように思われる)機械」のことを指します。すなわち、機械学習は人工知能を実現するための一つの技術ということになります。しかし、人工知能に関しては、専門家の間でも様々な定義が提唱されており、共通の見解は定まっていないというのが実情です。また、ディープラーニング(DL)というのは、機械学習よりも狭い概念で、機械学習分野における一つの手法のことです。具体的には、「ニューラルネットワーク」という機械学習手法の層を「深く」することでモデルの性能向上を目指す手法のことを指します。したがって、人工知能という広い概念の中に機械学習という分野があり、機械学習という分野の中にディープラーニングという手法があるという関係になっています。
機械学習の定義と、人工知能、またディープラーニングをより詳しく確認したい方は、「機械学習とは?」「ディープラーニングとは?」をご覧ください。
機械学習エンジニアの概要
次に、機械学習エンジニアという職種の概要についてご説明します。具体的には、indeedやdodaなどの求人サイトで「機械学習エンジニア」などのキーワードから得た求人情報の分析結果をもとに、機械学習エンジニアの仕事内容と求人数、年収の相場をご紹介します。
機械学習エンジニアの仕事内容
まず、機械学習エンジニアの仕事内容についてみていきましょう。「機械学習エンジニアなんだから、機械学習のモデリングができればいいんでしょ?」と思っている方もいるかもしれませんが、そう単純な話ではありません。ここでは、リアルな仕事内容を知っていただくため、実際の求人情報約100件の、仕事内容のテキスト分析結果を参考に解説します。下の図1をご覧ください。
この図は、共起ネットワークと呼ばれる可視化手法で、仕事内容のテキストから抽出した頻出語をグルーピングして可視化したものです。円が大きいほどその単語の出現頻度が高かったことを表し、単語同士の関係性の強さは線の有無や、実線と点線の違いで表現されています。この図を読み解くことで、現在の機械学習エンジニアの求人における「仕事内容」の傾向をつかむことができます。
ただ、あくまで集計データであって、一つ一つの求人がここでの分析と同様の傾向を示すとは限らないことに注意が必要です。(ちなみに、この可視化には「KH Coder」というフリーソフトウェアを用いています。簡単にテキストマイニングができる便利なツールですので、興味がある方はKH Coderのホームページをご覧ください。)
上の図から、現在の日本で機械学習エンジニアと呼ばれる職種の人々が行なっている仕事には、大まかに以下のような特徴があると言えるでしょう。
仕事内容① (青緑):機械学習の構築・開発
まず、図1中央の、青緑色で大きく表現されているグループを見てみましょう。これは、機械学習エンジニアのメインの業務が機械学習モデルの構築・開発であることを示しています。この点に関してはある意味当たり前と言えます。
仕事内容② (黄色):人工知能・アルゴリズムのPoC
次に、黄色で表現されているグループから、人工知能・アルゴリズムのPoC(Proof of Concept, 概念実証)も仕事内容であることがわかります。PoCとは、新たな概念やアイデアが実現可能なものであるかどうかを検証する作業のことです。機械学習エンジニアには、既存の手法を活用するだけでなく、新たなアイデアを検証する能力も求める企業が多いようです。
仕事内容③ (青):要件定義から運用までの、幅広いシステムエンジニアリング
青いグループからは、機械学習エンジニアが要件定義から運用まで、幅広いシステムエンジニアリングを行うことがわかります。企業は、機械学習エンジニアに対して、機械学習に関連したシステムの構築や運用まで任せたり、他のシステム開発業務にも従事してもらうことを希望しているようです。機械学習に加え、システム全般への一定程度の知識や理解が必要になると思われます。
仕事内容④ (オレンジ・赤):BIツールを用いたデータ分析
オレンジと赤のグループからは、BIツールを用いたデータ分析を行うことがわかります。BIとはビジネスインテリジェンスの略で、企業内の様々なデータを蓄積・分析することで、企業の意思決定に役立てることを指します。BIツールとは、そのための可視化ツールなどの事です。機械学習エンジニアはデータの扱いや読み取りに長けていると考えられることから、こういった業務も任されるのでしょう。
開発環境 (黄緑):言語はPythonやJava、インフラにはAWSなどのクラウドサービスを活用
最後に、黄緑色のグループを見てみましょう。Python、Java、AWSとあることから、開発はPythonやJavasなどの汎用プログラミング言語で行い、インフラにはAWSなどのクラウドサービスを活用していることが伺えます。
このように、機械学習エンジニアは、機械学習のモデリングなどが中心的業務ではあるものの、極めて多種多様な内容の仕事を任される可能性がある職種と言えます。なお、機械学習エンジニアになるために必要なスキルについては、後ほどまとめてご紹介します。
機械学習エンジニアの求人数
次に気になるのは、機械学習エンジニアの求人が実際にどれくらいあるのかということではないでしょうか。そこで、複数の転職サイトで「機械学習エンジニア」、「機械学習」というキーワードで求人数を調査しました(2020年9月15日時点)。比較対象として調査した「webエンジニア」、「エンジニア」の結果と併せて表にまとめました。サイトによって、全掲載求人数や検索のアルゴリズム等も異なると思うので、参考程度ではありますがご覧ください。
上の表を見ると、「機械学習エンジニア」ではあまりヒットしないサイトもあることから、まだそれほど一般的な名称とは言えないようです。ただ、「webエンジニア」や「エンジニア」には及ばないものの、「機械学習」関連の求人は一定数あることがわかります。
機械学習エンジニアの年収
次に、機械学習エンジニアの年収について解説します。今回分析したデータは、年収が求人によっては月給で表記されており、たいていが最低と最高のレンジで表記されていました。年収と月給を直接比較できるようにするために、月給の場合は15倍(12ヵ月分プラス賞与)にしました。年収と月給どちらも載っている場合は、年収と月給×15の大きいほうを採用しています。この作業を最低年収と最高年収それぞれで行い年収のレンジを計算しました。その結果以下の表のようになりました。
同じ機械学習エンジニアと言えど、担当する業務やスキルレベルで年収は大きく変わるようです。ただ、最高年収2000万円台の求人もあることから、収入面で夢のある職業であることは間違いありません。
Column : PythonとRのどちらを学ぶべき?
機械学習を学ぶ際に迷うポイントの一つに、PythonとRのどちらの言語を学ぶかという問題があります(参考:R言語とは)。どちらの言語でも機械学習を実装することは可能なので、求人ではどちらのスキルが人気なのかを確認してみましょう。
上の表は、今回分析に用いた求人データをPythonとRに関して集計したものです。必須としている求人件数、歓迎としている求人件数、必須または歓迎としている求人件数のすべてでPythonに軍配が上がりました。特に、必須としている求人件数は35件の大差がついています。また、Pythonを必須または歓迎としていて、Rに関しては不明の求人は44件あるのに対し、Rを必須または歓迎としていて、Pythonに関しては不明の求人はわずか1件しかありませんでした。このことから、日本の企業ではPythonの方が人気があり。Rは+αのスキルと捉えられていると思われます。これから機械学習を学び始める方は、Pythonを学ぶのが無難でしょう。
機械学習エンジニアになるための必須スキルと+αスキル
機械学習エンジニアがどのような仕事をする職種で、どれくらいの収入が得られるのかについてイメージを掴んでいただけたところで、次に、機械学習エンジニアに求められるスキルについて解説します。ここでも、先ほどの仕事内容と同様に、実際に求人情報を分析することでリアルな情報をお伝えしようと思います。
上の図は、約100件の機械学習エンジニアの求人情報に記載されていた、応募の「必須条件」と「歓迎条件」の頻出語をそれぞれグルーピングして可視化したものです。これらの図を活用して、機械学習エンジニアの「必須スキル」と機械学習エンジニアになった際に重宝される可能性がある「+αスキル」について解説します。(画像が小さくて見づらい方は、以下のリンクをご利用ください。「必須条件.png」「歓迎条件.png」「必須条件と歓迎条件.png」)
必須スキル
まずは、3つの必須スキルを見ていきましょう。
Pythonでの機械学習モデル開発能力
一つ目は、Pythonでの機械学習モデル開発能力です。特に、数年にわたる実務経験などの本格的な開発経験を求めている企業が多いようです。このことから、未経験から機械学習エンジニアを目指すには、かなり多くの学習量に加えてできるだけ実践的な実装経験を積む必要があると思われます。
機械学習モデルの理解とフレームワークの利用スキル
1つ目の点をより具体的に表しているのが、必須条件の右上の部分にある、機械学習モデルの理解やフレームワークの利用スキルについてのグループでしょう。利用できるスキルが求められているフレームワークとしては、歓迎条件の上部にあるTensorFlowやKeras、OpenCVなどが挙げられそうです。
C/C++、Javaなどの言語でのプログラミングスキル(一般的なシステム開発スキル)
必須条件の左上部に注目すると、C/C++やJavaなどのPython以外の言語でのプログラミングスキルも要求されているようです。ただ、この点に関しては、JavaやC/C++のスキルそのものが重要なのではなく、これらを用いるシステム開発全般に関して広い知識とスキルがあることを要求しているという見方が可能かと思います。
+αスキル
次に、5つの+αスキルについて解説します。
AWS・GCPなどのクラウドサービスの利用スキル
歓迎条件の中でも機械学習などの重要な単語の近くに描画されていて、必須条件にすら挙げている企業もあるのが、AWS・GCPなどのクラウドサービスの利用スキルです。近年、クラウド上での開発が広まっていることや、データの蓄積に伴い機械学習に必要な計算リソースが膨大になってきたことが影響しているのでしょう。身につけられたら武器になる可能性が大きいスキルの一つです。
BIツールを用いたデータ分析のスキル
先ほど仕事内容の項目でも出てきた、BIツールを用いたデータ分析のスキルも、重視している企業は多いようです。機械学習の具体的な仕組みに関しては、まだまだ理解が広まっていない企業も多いでしょうし、BIツールを用いて、データを活用してわかりやすい説明をするスキルが必要とされる場面もあると思われます。
数学や統計、アルゴリズムの深い理解
数学や統計学、アルゴリズムの深い理解を歓迎条件に挙げている企業もあります。これらの分野に関しては、機械学習エンジニアになる以上当然学ばなければならない分野です。しかし、より深く学んでおくことで、新たなアルゴリズムの開発など、活かせる場面があるかもしれません。
画像処理・自然言語処理関連のスキル
画像処理や自然言語処理関連のスキルを求めている企業もあるようです。活用したい特定の種類のデータを持っている企業がピンポイントで分野を指定している可能性もありそうです。機械学習を幅広く学んで知識をつけたら、これらの特定の分野に特化してみるのも一つの選択肢かもしれません。
その他、DockerやHadoopなどのツールの活用スキル
そのほかに、DockerやHadoop、Kubernetesなどの、開発に活用されるプラットフォームやソフトウェア、ツールを活用するスキルもアピール可能かもしれません。興味がある方は是非調べてみてください。
いかがでしたでしょうか。このように、日本で機械学習エンジニアを目指すには、多くのスキルを身に付けることが望ましいです。しかし、これらを全て学ぶのは容易ではありません。まずは、必須スキルに挙げた3点をベースに、必要に応じて他のスキルも身につけていくのが現実的ではないでしょうか。
機械学習エンジニアを目指す際の注意点
機械学習エンジニアは非常に魅力的な職業です。上記のスキルをしっかりと身につけて機械学習エンジニアになることができれば、かなりの高収入も夢ではありません。一方で、最先端分野の新しい職種であるがゆえに、目指す際に注意すべき点もあります。本節では、機械学習エンジニアを目指す際の主な注意点をまとめます。
常に最新技術にキャッチアップする努力が必要
一つ目は、常に最新技術にキャッチアップするための努力が必要だという点です。機械学習はうまく活用することができれば、ビジネス・行政において分野を問わず非常に大きなインパクトをもたらします。そのため、日々世界中の大企業や大学の研究者がより良い手法を開発しようと競争しています。ゆえに、次々に新しい技術やソフトウェアが開発され続けているのです。したがって、機械学習エンジニアとして働くには、常に貪欲に学び続ける姿勢が求められると言えるでしょう。
業務範囲が不明確な場合がある
2点目は、業務範囲が不明確である場合がある点です。日本では、機械学習エンジニアという職種が出現してまだ日が浅く、業務範囲に関する統一された基準や認識があるわけではありません。先ほど仕事内容の項目で確認したように、幅広く様々な業務を任される可能性があります。同じ職種名でも企業によって業務内容が異なると言っても過言ではないかもしれません。ゆえに、自分が学んできたことが活かせなかったり、やりたかった業務に携われない可能性もあります。ポストを探す段階で具体的な業務内容をよく確認しておく必要があるでしょう。
まとめ
いかがでしたか。「機械学習エンジニア」というまだぼんやりとした職種について、皆さんがすこしでも具体的なイメージを持つことができていたら幸いです。機械学習エンジニアを目指す道のりは長いですが、まずは本稿で挙げた「必須スキル」を中心に学びを深めていきましょう。
codexaでは、Pythonでのプログラミングと機械学習フレームワークの使い方について、講座やAIマガジンで詳しく解説しています。codexaを活用して、機械学習エンジニアを目指しましょう!
- Pythonの基礎:「Numpy入門」「Pandas入門」「Matplotlib入門」
- 初歩的なアルゴリズム:「線形回帰入門」「実践 線形回帰」「実践 ロジスティック回帰」
- 様々な機械学習の手法:「決定木とランダムフォレスト」「サポートベクターマシン」「ナイーブベイズ」