2016年に囲碁AI「AlphaGo」が囲碁世界チャンピオンを破ったことなどを一例として、「人工知能」や「機械学習」といったキーワードが広く知られるようになりました。
ただ、人工知能や機械学習と言っても、聞いたことあるけどよくわからない、という人も多いかと思います。わかっているようでわかっていない。そんな「機械学習」を今回は初心者でもわかるように簡単に解説していきたいと思います。
人工知能と機械学習の関係性とは?
もともと、人工知能 (Artificial Inteligence) という言葉は1950年代ごろから存在しています。コンピューターに人間同様の知能を持たせよう、という試みから始まりました。映画「ターミネーター」でも敵としてAIが出てきましたが、いかにコンピューターに知能を与えるか、様々な科学者が試行錯誤してきました。
その後、人間が持つ知識を辞書やルールとしてコンピューターに教え込んでいったわけですが、1980年代、人工知能は大きな発展を遂げます。
いままでの、人間が機械に知能を与える方法から、機械に学習する能力を持たせることによって、機械に明示的にルールを与えなくても自ら判断をすることが可能になりました。これが、いわゆる機械学習 (Machine Learning) です。人間の知能を持つ複雑な機械を作るための一つの方法が機械学習、ということです。
そこから、さらに2000年代に入って深層学習 (Deep Learning) が注目され始めます。それまでの機械学習では、ある程度人間によるガイダンスが必要でしたが、深層学習では機械が自ら何を学習するか決めることができるようになりました。最近よく目にするディープラーニングという単語は、まさにこの深層学習のことです。
完結にまとめると、人工知能のなかに機械学習という手法が存在し、さらに機械学習の中でも深層学習という手法が存在しているということです。人工知能と機械学習は別のものではなく、同じカテゴリに属するものと考えましょう。
機械学習の仕組みとは?
次に、機械学習とはどのような仕組みなのかを完結に説明したいと思います。
機械学習とは、コンピューターにデータを読み込ませて、アルゴリズムに基づいて分析させる手法のことです。事例となるデータを反復的に学ばせることによって、そこに潜む特徴やパターンを見つけ出させます。そして、見つけた特徴を新しいデータに適用することで新しいデータの分析や予測を行うことが可能になるわけです。
では、コンピューターは与えられたデータをどのようなアルゴリズム(手法)に基づいて分析するのでしょうか。
機械学習アルゴリズムには「教師あり学習(Supervised Learning)」、「教師なし学習(Unsupervised Learning)」、「強化学習(Reinforcement Learning)」の三種類が存在します。順番に解説していきたいと思います。
教師あり学習
教師あり学習は、コンピューターにラベル付きの入力値を与えて学習させる方法です。これを入れたらこれを出すのが正解という訓練を繰り返すことによって、新しいデータを入れたときに正しい出力ができるようになります。
例えば、コンピューターに、画像が「馬」なのか「牛」なのかを判別させたい場合、「馬」や「牛」とすでにラベルが付いた画像を大量に与えることによって「馬」と「牛」それぞれの特徴を学習させて、ラベルのない画像を入れても正しくの判別ができるようにしていきます。
教師なし学習
教師なし学習では、ラベルの付いていないデータを与えることによって、そのデータの特徴や傾向を学習させます。この場合、正しい出力というものは存在しないので、入力値をグループ分け(クラスタリング)できるように訓練して、新しいデータがどのグループに近いかを判別させます。
教師なし学習の活用事例の一つとして顧客データのクラスタリング分析が行われています。顧客を類似する特徴によって細かくセグメント化(細分化)することによって、ターゲットを絞ったマーケティングが可能になります。これを顧客セグメンテーションというのですが、大量の顧客データを年齢、家族構成、職種などにクラスタリングする際に機械が行っているのが、まさに教師なし学習です。
強化学習
強化学習は、教師あり学習のなかでも、コンピューターの出力に点数をつけることによって、より点数の高い(価値の高い)出力を学習させる方法です。望ましい結果には報酬を与えることによって、機械によりよい出力を覚えさせることができます。
囲碁ソフトなどのゲーム人工知能などには、この強化学習が使われています。勝つと報酬をもらえるので、機械は勝つためにいろいろな手を試すことになり、回数を重ねるにつれて強くなっていくわけです。
機械学習が使われている事例とは?
機械学習の仕組みと種類をだいたい理解していただけたところで、今度は機械学習の具体的な用途と実例を見ていきたいと思います。人工知能や機械学習と聞くと難しいものというイメージがあるかもしれませんが、意外と身近なところでも使われています。
メールのスパムフィルター
メールのスパムフィルタは、迷惑メールによく出てくる単語とその出現確立をもとに、スパムと非スパムの分類を行っています。これは機械学習の中でも教師あり学習なので、正解のわかっているデータを大量に用意する必要があります。トレーニングデータから、単語ごとの使用される確率を学ばせ、その結果を受信メールに適用してスパムと非スパムの分類を行っています。
ECの商品レコメンド
インターネットで買いものをしている時によく出てくる商品レコメンドでも、アイテム同士の類似度計算に機械学習が使われています。この場合、コンピューターはデータから特徴や傾向を分析するので、教師なし学習が使われています。(そのほかにも多数の手法が存在ます)
商品レコメンドでは、ユーザーべースとアイテムベースの二種類に大別できます。ユーザーベースでは、ユーザーを似た者同士でグループ分けし、そのユーザー群の中で高い評価を受けた商品をおすすめします。一方、アイテムベースでは、その商品と似た商品や一緒に購入されることが多い商品をおすすめします。
汚職防止
人工知能大国として知られるシンガポールでは、銀行による汚職防止作戦に機械学習が使われています。社内やミーティング中の行動、メールを機械に監視させることによって、汚職を起こしそうな人を検出し、汚職を未然に防いでいます。この汚職防止システムにも教師なし学習が使われています。全社員の行動パターンをコンピューターにデータとして与えることによって、正常値から大きく外れた異常行動を検知します。
顔認識
カメラの顔認識にも機械学習が使われています。コンピューターに人間の顔を認識させるには大量のラベル付きの画像(教師データ)が必要です。教師データをもとに、コンピューターは画像の特徴を覚えていきます。例えば、人の顔の場合、口が一つで目が二つ、といった具合に、覚えた特徴をもとに顔認識を行っています。
自動運転
自動運転には様々な機械学習の手法が使われていますが、根幹となる一つの手法として強化学習が使われています。自動運転車に取り付けられた多数のセンサーからデータを取得し、様々なシチュエーションを学習することによって自律的に上手な運転を学んでいきます。また、他の手法としては標識や信号の認識には教師あり学習が使われています。
他にも株価予測、白黒画像の自動色付け、自動車の衝突事故削減など、いろいろなシーンで機械学習は幅広く活躍しています。
なぜ機械学習を学ぶ必要があるのか?
まだまだ新しい分野ということもあり、日本では機械学習系のエンジニアが不足しています。経済産業省は機械学習に関わる人材が2020年には4.8万人不足すると予測しています。
一方で、企業側の機械学習エンジニアに対する需要は増加しているので、採用の難しさから、機械学習エンジニアの年収の予算が高まりつつあります。
エンジニア一人に対して1500万以上の予算を準備しているという会社も少なくなく、年収5000万超えというケースも稀にあります。米国の企業レビューサイトGlassdoorによると、機械学習エンジニアの平均年収は$120,931(約1320万円)と算出されています。
ソフトウェアエンジニアと機械工学士の平均年収がそれぞれ$104,463(約1140万円)と$73,016(約800万円)なので、他のエンジニアと比べても機械学習エンジニアは需要が高いことがうかがえます。企業からしたら、優秀な機械学習エンジニアを確保しておくということはそれほどの価値があることなのです。
機械学習の勉強方法とは?
それでは機械学習を習得するためには、どのような勉強をすれば良いのでしょうか?前述した通り日本国内でも機械学習エンジニアへのニーズ高まっており、とても注目されている分野です。
機械学習を習得するのに最低限必要な知識
一概に「機械学習」と言っても様々な手法やアルゴリズムがあり、これを勉強すれば機械学習が習得できると言った方法はありません。ここでは、機械学習エンジニアになるために必要な最低限のスキルをまとめました。
(その1)Pythonの基礎
機械学習でPython(パイソン)が必須という訳ではありませんが、世界的な標準としてPythonが最も使われているプログラミング言語です。(参照:なぜ機械学習にはpythonなのか?)
(その2)線形代数と統計の基礎
線形代数とは行列やベクトルなどを扱う数学です。線形代数や統計を100%理解する必要はありませんが、初歩的な用語や手法などは最低限知っておく必要があります。
(その3)Pythonライブラリー
機械学習では高度数値計算の補助をするNumpyや大規模データの取り扱いを効率化するPandas、データの可視化を簡単にするMatplotlibなどのオープンソースライブラリーが活用されます。これらの基本的な操作方法は最低限学ぶ必要があります。
どこで機械学習を学べる?
機械学習は急成長している分野ということもあり、学習用のリソースも多く出回っています。おそらく多くの初学者が最初に試みるのが機械学習入門やディープラーニング入門書などの書籍かと思います。
事前に線形代数や統計などの基本的な知識がある方であれば書籍でも難なく理解できますが、入門書と言えど前提知識が無いとハードルが高い書籍があるのも事実です。
codexa(コデクサ)では、機械学習準備編として機械学習の勉強を始める前に知っておくべき最低限の入門講座を無料で公開しています。こちらも是非、ご利用してみて下さい。
上記の準備編コースを完了された方は、下記のチュートリアルもオススメしています。機械学習の初歩的な手法ではありますが、Pythonを使ってより深い理解を得ることが出来るかと思います。
まとめ
機械学習はハードルが高いと思われがちですが、実はある程度の数学知識とプログラミングスキルがあれば誰でも始めることができます。
機械学習は「ITと統計学の素晴らしき結婚」と表現されることもあるくらいで、根本的な考え方は統計数学とほとんど一緒です。複雑な数式や計算などが出てきて難解に見える時もありますが、基礎から固めて少しづつ応用編をこなして行くことで、知識と経験を積み重ねることが可能かと思います。
何か新しいことを勉強してみたいと思っている方は、これを機に機械学習の勉強を始めてみてはいかがでしょうか!
以上となります!