【徹底解説】機械学習(マシンラーニング)とは!まずはここから理解しよう
初心者向けに機械学習(マシンラーニング)とは何か詳しく解説しています。まずはここから理解しましょう。AI(人工知能)を構築する上で必須の機械学習。機械学習の種類やディープラーニングとの違いについて紹介しているので、ぜひ理解しておきましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
現在、幅広い業種で人工知能(AI)が使われています。またニュースや新聞でも、人工知能の報道を目にしない日はありません。
このような状況の中、人工知能に興味・関心を寄せるエンジニアが増えてきています。また企業においても、人工知能のスキルを持ったエンジニアの採用が活発に行われています。
機械学習は、その人工知能の中核をなすテクノロジーであり、現代のエンジニアにとっては、ほぼ必須の知識とも言えるでしょう。
この記事では、機械学習の概要、各種手法についての解説、ディープラーニングとの違いなどを紹介します。
機械学習とはどのような技術か、実際にどのようなサービスに使われているか、ぜひ知っておきましょう。
なお本記事は、TechAcademyのAIオンライン講座の内容をもとに作成しています。
目次
今回は機械学習について解説するよ。
田島メンター!機械学習って最近よく耳にしますね。具体的にどのような技術なんですか〜?
人工知能の中核をなす技術の1つなんだ。詳しく見ていこう。
分かりました!
機械学習とは
人工知能(AI)とは、「コンピューターが物事やルールを理解するための仕組み」の様々な技術の総称です。コンピューターが物事やルールを理解するためには、人間が学習するプロセスと同様に、情報を与えて物事の特徴やルールを学習させなくてはなりません。
この学習方法のことを機械学習(マシンラーニング)と呼びます。
機械学習は、従来のプログラミングと違い、開発者が全ての動作をプログラミングするわけではありません。開発者はコンピューターにデータと分け方を与えます。コンピューターはその情報を元に、データの特徴を学習し、新たなデータに対する正解を予測します。
例えば、以下のような手書き数字の画像データがあったとします。
開発者は、この画像データに対する正解、「0」や「1」といった数値をペアで与えます。
コンピューターは、画像データと正解の数値をもとに、数値毎の画像データの特徴を学習します。例えば「画像データのどの位置が濃い」といった特徴です。この学習の成果を「モデル」と言います。
また、このことは、機械学習はデータの特徴をモデル化(数式化)できることを前提としている、とも捉えることができますね。
そして、このモデルをもとに、新たな画像データの正解を「予測」します。これが機械学習の大まかな流れです。
なお、人工知能の精度を高めるには、大量のデータでコンピューターに学習させることが必要です。2000年代に入り、高速・高性能なコンピューターが容易に入手できるようになりました。また、インターネットの発展により、従来より格段に多くのデータを収集できるようになりました。このことが、現代の機械学習の技術を支えています。
それでは、次に機械学習の種類について確認して行きましょう。機械学習は大きく「教師あり学習」、「教師なし学習」、「強化学習」の3つに分けることができます。
教師あり学習
教師あり学習とは、データと正解を与えて、コンピューターに学習させる方法です。前出の手書き数字の学習例も教師あり学習です。
教師あり学習は、分類問題と回帰問題に分けることができます。
分類問題
分類問題は、データを種類ごとに分けることを目標とします。例えば画像データを与えて花の種類を予測する、音声データを与えて文字を予測する、これらは分類問題となります。
回帰問題
回帰問題は、データの特徴から、新しいデータに対する値を予測することを目標とします。
例えば株価の予測や、天気予報、これらは回帰問題となります。
教師あり学習の手法
次に代表的な教師あり学習の手法について紹介します。
線形回帰、線形分類
データを直線で予測するのが線形回帰、直線で分けるのが線形分類です。線形回帰(分類)は、学習も予測も高速で、モデルをシンプルに構築できる特徴があります。また古くから研究されており、以外に線形回帰(分類)できるデータは多いため、まず最初に検討してみるべき機械学習の手法の1つでしょう。
SVM(サポートベクターマシン)
SVMは線形回帰(分類)の手法の1つです。線形回帰(分類)は直線で分類を行うのに対し、SVMは超平面分離定理という考え方をもとに、空間をねじれさせることで、最終的に曲線で回帰(分類)を行う手法です。
SVMは優れた機械学習の手法の1つで、ディープラーニングが登場するまでは、とても多く使われていました。モデルをシンプルに構築出来、精度も良いことから、現在でも多く使われている手法です。
決定木
木構造のモデルにより分類する手法です。決定木は機械学習の手法としてだけでなく、意思決定を助けるためのツールとしてもよく用いられます。他の手法に比べて、人間が見てもモデルを理解しやすいことから、リスクマネジメントのような、人間の判断が必要な分野の予測によく用いられます。
ニューラルネットワーク
ニューラルネットワークは、重回帰分析(多変数解析)の手法の1つです。人の神経回路をモデルとしており、機械学習の手法としては、最も古く(1950年代)から研究された来たものの1つです。
ロジスティック回帰
「回帰」と書いていますが「分類」の手法です。
ニューラルネットワークのモデルの一部を変更(活性化関数をシグモイド関数に変更)したものです。ディープラーニングの1層版です。ディープラーニングはこのロジスティック回帰を複数層組み合わせたモデルです。
教師なし学習とは
教師なし学習とは、データだけ与えて、コンピューターにデータをグループ化(クラスタリング)させる方法です。
例えば通販サイトで商品を購入した時「この商品を買った人はこんな商品も買っています」という文章を見たことは無いでしょうか。これは、コンピューターに「購買履歴」のデータを与えることで、教師なし学習により「商品Aを買った人は、商品Bを買う確率が高い」というようにユーザをグループ化することで実現しています。
また、教師なし学習には主成分分析といって、データ分析をより行いやすくするための方法もあります。
教師なし学習には以下のような手法があります。
k平均法
クラスタ(分類するグループ)の数を決め、クラスタの数分、ランダムな点を起きます。各データは一番近い点に所属させます。所属が決まったら、クラスタに属するデータの中心を新しい点とします。
これを繰り返すことでデータをグループ化します。
主成分分析
機械学習でモデルを構築する際、その前段階として、データの次元(説明変数の数)を削減するために用いられます。変数同士の相関度合いと寄与率をもとに、複数の変数を相関の少ない「主成分」と呼ばれる変数にまとめる手法です。
これにより、機械学習のモデルをシンプルに構築することができるようになります。
強化学習とは
強化学習とは、よい結果には報酬を与えることにより、コンピューター自らに最適な方法を導き出させるようにする学習方法です。ゲームやロボットの学習によく用いられます。
強化学習では、守るべきルールと、行動に対する報酬が与えられます。例えば、トランプのゲームにおいては、守るべきルールはゲームのルール、行動に対する報酬としては、勝つことに対する報酬、のようになります。
コンピューターはその情報をもとに、考えられるパターンをランダムに試行していきます。最初は全く上手く行かないように見えますが、何度も試行していくうちに、コンピューターはより報酬を多く得られる行動を選択するようになります。
代表的な手法として、Q学習といった手法が知られています。
ディープラーニングとの違いとは
それでは、機械学習と並んでよく耳にする、ディープラーニングとは、どのような違いがあるのでしょう。
結論としては、ディープラーニングは機械学習をより発展させたものです。
機械学習はデータの特徴をモデルで表します。しかし、機械学習ではデータの特徴は何かを開発者が指示しなくてはなりません。
手書き数字の画像データを例にすると、「画像データの濃淡」がデータの特徴である、ということを開発者が指示します。
これに対して、ディープラーニングは、データの特徴自体をコンピューターが見つけます。つまり、データのどこに注目すれば良いかということをコンピューター自身が学習して見つけ出すことで、自動的にどんどん賢くなっていく、という訳です。
機械学習の代表的なライブラリ
それでは最後に、機械学習の代表的なライブラリを紹介します。
scikit-learn
機械学習のライブラリと言えば、まずはscikit-learnです。教師あり学習・教師なし学習とも、基本的な機械学習の理解を深めるには、初学者はscikit-learnから学習することをおすすめします。
scikit-learnには、多くの機械学習のモデルとテスト用データセットが含まれており、初学者でもすぐ機械学習を試してみることができます。
scikit-learnの特徴は、ほんの少しのソースコードの変更だけで、モデルを変更した機械学習を行える点です。
例えば、最初、SVM(サポートベクターマシン)でモデルを構築したとしましょう。こちらはソースコードの一部です。
from sklearn import svm clf = svm.SVC(gamma=0.001) clf.fit(X_train, y_train)
次に、モデルをロジスティック回帰に変更してみます。
from sklearn.linear_model import LogisticRegression # ロジスティック回帰 clf = LogisticRegression() # ロジスティック回帰 clf.fit(X_train, y_train)
このように、わずか2行変えるだけでモデルを変更できます。
現在、機械学習(非深層学習)のライブラリと言えばscikit-learn、ほぼ一択です。現在は深層学習(ディープラーニング)のライブラリが主流となっています。
Tensorflow
深層学習(ディープラーニング)のライブラリで最も有名なものと言えばTensorflowです。TensorFlowはGoogleが開発し、オープンソースで公開しています。
オープンソースで公開されているため、私たちはGoogleの最新の研究成果を自分の手で試してみることができます。例えば、画像分類のInception-v3というモデルは、人間を超える、約96%の画像正解率を達成しています。
機械学習について、理解は深まったかな?
機械学習の仕組みやライブラリの種類など、勉強になりましたー!
機械学習は、これからエンジニアの必須の知識として必要になってくるよ。深層学習や画像認識、自然言語処理については、また別のところで説明するね。
分かりました。ありがとうございました!
今回は、機械学習について解説しました。
これから機械学習を勉強したい、機械学習を使って何か作ってみたいという方は最初に理解しておきたい内容でしょう。
また、オンラインのプログラミングスクールTechAcademyでは、AIオンライン講座を開催しています。
AI(人工知能)の構築に必要な機械学習・ディープラーニングについて実践的に学習することができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、習得することが可能です。
この記事を監修してくれた方
太田和樹(おおたかずき) 普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。 開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント 地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。 |