Developer

【Python連載】機械学習への入門2 ~機械学習とは~
2021.12.27
Lv1

【Python連載】機械学習への入門2 ~機械学習とは~

Pythonを使用したAI開発について、今回は機械学習と呼ばれるものについてご紹介していきます。


機械学習について

機械学習とはAIを実現するための技術の一つであり、データ分析技術の一種です。

機械学習も、AIと同様に明確な定義はありません。
ただし、1950年代に機械学習という言葉を初めに使い、人工知能の概念を広く世に広げたアメリカのコンピュータ学者アーサー・サミュエルは、機械学習について次のように表現したそうです。

・(機械学習とは)コンピュータに明示的にプログラムをすることなく、学習する能力を与える研究分野

これは、どういうことでしょうか。
イメージとなりますが・・・例えば、何種類かボールがあるとします。

この中から、野球ボールを当てるというプログラムを自分で書きたいとします。
機械学習ではないプログラムの場合には、例えばボールの色やサイズ、継ぎ目の形状をif文かなにかで条件分岐させて、最終的に『これは野球ボールです』という結果を得ることになるでしょう。
プログラム作成者が明示的にプログラムすることで、野球ボールを見分けています。

上図だと条件分岐はそこまで多くありませんが、モノによってはもっと条件分岐を増やしたり工夫したりしないと、答えに辿り着けないかもしれません。
これが機械学習の場合は、次のようなイメージで野球ボールを判断します。

事前に与えられた学習データから機械が自身でボールの特徴を学習し、『こういうパターンの場合、これは野球ボールだ』と判断出来るようになる、というような感じですね。

機械学習のイメージ自体は、掴めたでしょうか。
それでは、機械学習についてもっと詳しく見ていきましょう。
機械学習には、大きく分けて3種類があります。

・教師あり学習
・教師無し学習
・強化学習

以下ではAIの技術として広く知られている画像分析を例に、それぞれ説明をしていきたいと思います。

教師あり学習

教師あり学習とは、問題と正解が共に揃っているデータを参照して、特徴やルールを学習していきます。
例えば、『ボールの写真(問題データ)』と『そのボールの種類(正解データ)』を使って学習を行います。
先ほどの上図でのイメージも、この教師あり学習に近いです。

上図だと、過去に学習して記憶したものの中から、最も特徴の近いものを答えとして選んでいます。
色は黄色であるものの、『丸くて』『縫い目があって』『小さめで』という特徴から、野球ボールが最も正解に近いのではないかということを自身で導き出しているイメージです。

教師あり学習は、天気、株価、不動産価値 の変動予測や、音声認識、画像認識などで使用されています。

教師無し学習

教師無し学習とは、正解データが無く問題データのみがあり、データの特徴やルールを見つけるというものです。

例えば、『ボールの写真』や『バットの写真』などを学習した時は、それらの特徴を抽出してグループ分け(クラスタリングとも言います)を行います。

教師無し学習は、機械の異常検知や購買データ分析などで使用されています。
異常検知を上のイメージ図でいうと・・・例えば『球状』でもなく『棒状』でもないようなデータが入ってきたとします。
バドミントンの羽、とかで良いでしょう。『球状』でもなく『棒状』とも言い難い形状をしていますよね?
つまりそれを、前例の無い”異常”ということで検知が出来るわけです。

また、教師無し学習の一種で、ディープラーニングと呼ばれるものがあります。主に画像、音声認識や傾向予測などが得意と言われています。

強化学習

強化学習とは、報酬(スコア)を与えるという設定をすることで、学習効率を上げていくというものです。報酬を大きくするために、より良い結果を導き出せるように試行錯誤を繰り返していきます。
強化学習は教師あり/無し学習とは異なって動的な環境で動作し、収集した経験に沿って学習します。

テレビゲームでもスコアというものがあると思いますが、ゲームが上手な人ほど高いスコアを出せますよね。
テレビゲーマーはより高いスコアを出せるように日々プレイングを洗練させて腕を上げていくわけですが、強化学習はそれと似たようなイメージになります。

強化学習は、ゲーム用の対戦AIや自動車の自動運転などに使用されています。
※ボードゲームのAIとして有名なアルファゼロがこれに該当すると言われています。

以上が機械学習についての概要となります。
簡単なイラストでイメージをご紹介しましたが、実際には裏で膨大な量の計算がされています。ですがPythonではこれらの計算を効率よく行うためのライブラリが豊富にあり、だからこそAI開発はPythonが向いていると言われています。

次回の記事では、PythonにおけるAI開発で活用できる各種ライブラリをご紹介します。

 

※なお、今回は省略しましたが、実際には学習や訓練を行った結果として『学習済みモデル』というものが作られます。
モデルとは、入力があった際に何らかの評価や判定を行って出力を行うものです。
バドミントンの羽の画像を入力とした時に、『ボール』『バット』『それ以外』のいずれに属するかという判定を行った結果『それ以外』という出力を行う部分になります。
モデルについては、今後の記事でまた触れたいと思います。