python 機械学習 手順

機械学習

【初心者向け】機械学習入門【まずは概要をつかもう】

2019年7月8日

こんにちわ。[box class="box23"]そもそも機械学習って何?
AIを勉強したいけど機械学習との関係が知りたい。

機械学習には具体的にどのようなものがあるのか、又まずは機械学習の概要を知りたい[/box]今回はこの様な方に向けた記事になります。


今回のテーマは「機械学習の総論」です。機械学習について大まかにイメージできる様になるのが目標です。以下の記事でも機械学習については大まかに触れましたが、復習の意味も込めてまとめていきたいと思います。[kanren id="585"]

難しく考えずに、機械学習にはどの様な種類のものがあるのか、気軽に流し読みしてください。


それでは早速みていきましょう。

機械学習に関連する用語集

機械学習 入門

まずは機械学習とはどういうものかについて学びましょう。機械学習に関する色々な用語について紹介していきます。

AI(人工知能)

AI(Artificial intelligence:人工知能)を支える根幹の技術が機械学習です。最近はAIという言葉が巷にあふれていますが、機械学習のことをAIという場合もあり、AIを意味する事がごちゃ混ぜになっている印象があります。


そのAIってどの様なものがあるのでしょうか。

「言語の理解や推論、問題解決などの知的行動を人間に代わってコンピューターに行わせる技術」

>>【Wikipedia】人工知能

ひと昔前だとAIといえば映画の世界ですが、現在では日常のあらゆるシーンでAIが多様されています。

【引用】松尾 豊(2015) 「人工知能は人間を超えるか ディープラーニングの先にあるもの」>> 【引用】松尾 豊(2015) 「人工知能は人間を超えるか ディープラーニングの先にあるもの」


また上図にもある様に、現在はAIの第3次ブームに入っています。


AIの技術そのものも急成長していますし、さらにはAIが日常生活品でも多様される事が多くなってきた事もあり、一般の方への認知度も上がってきました。


参議院常任委員会調査室・特別調査室が出した「第3次ブームを迎えたAIの現状及び今後 」という調査結果がありますが、この調査結果にもある様に政府も認めているほど非常に注目されている分野でもあります。

シンギュラリティ(技術的特異点)

AI技術の発展は非常に目覚ましいものがありますが、ここでシンギュラリティ(技術的特異点)という問題があります。


では、シンギュラリティ(技術的特異点)とはどの様な事をいうのでしょうか。

シンギュラリティ(技術的特異点)とは、人工知能が発達し、人間の知性を超えることによって、人間の生活に大きな変化が起こるという概念を指します。

シンギュラリティという概念は、人工知能の権威であるレイ・カーツワイル博士により提唱された「未来予測の概念」でもあります。
>>【BizHINT】シンギュラリティ(技術的特異点)


機械学習 入門
映画「ターミネーター」でも描かれていた様に、人工知能が人間を支配するという世界が将来現実になると考えたら少し怖いですね。


とはいえ、現実的にシンギュラリティは問題になっていまして、それが実現するのが2045年とも言われています(2045年問題)
>>【日本経済新聞】人工知能「2045年問題」コンピューターは人間超えるか


このようにAIの技術を進化と共に、人間がAIをどのようにコントロールしていくかも考えていかなければいけません。

機械学習

人工知能 ディープラーニング 教師学習における三大重要項目

AI技術の根幹にあるのが 機械学習(machine learning) です。


機会学習とは「機械」が「学習」するという言葉のとおり、PCがビッグデータを学習し、それを基にしてPCが判断を行うというものです。


ここでいう「判断」とは、以下のような内容を指します。[box class="box20"]

  • 人間が写真を見て「これはネコの写真だ」というように、答えが決まっている事に対してそれを学習し正確に判断すること
  • 「現時点では分かっていない」ことに対して学習から「将来はこうなるのではないか」と予測を立てること
  • 失敗を繰り返すことによってさらに良質な行動ができる様になるのと同じ様に、過去に学習した内容から、その時点・瞬間に最良の判断を下す事ができること[/box]

深層学習(ディープラーニング)とニューラルネットワーク

機械学習 入門
人工知能、機械学習、ニューラルネットワーク、ディープラーニングの相関関係図

機械学習とは別に 深層学習(ディープラーニング:deep learning) という言葉を聞いた事がある方も多いと思います。


では機械学習と深層学習は何が違うのでしょうか。


その関係を見ていく前に ニューラルネットワーク(neural network) という言葉について説明します。


上図の様に機械学習の中には単回帰分析や深層学習など色々なものが存在します。


ニューラルネットワークは簡単に言うと、人間の脳(神経回路)の構造を基にプログラムで再現した構造です。

人間の脳は多数の神経回路(ニューロン:neuron)で構成されており、ニューロンとニューロンが繋がることで、大量のデータを蓄積する事が出来る神経回路を形成しています。


人間が外部から学習した情報を電気信号として神経回路の中を流れる仕組みが出来上がっており、新しいニューロンが繋がることで人間は新しいことを学習する事ができます。


人間の脳(神経回路)の仕組みをコンピュータプログラム上で模しているので「ニューラル」という言葉をつけて「ニューラルネットワーク」と呼んでいます。


ニューラルネットワークを利用してコンピュータに学習させるのが「深層学習」です。つまり、上図の関係でもある様に深層学習は機械学習の一部だと思ってください。


ニューラルネットワークや深層学習の仕組みを理解するのは非常に難しく労力もかかるため、機械学習を行うためだけであれば、ぶっちゃけスルーしてokです。


しかし、既に開発された深層学習を行うだけであれば「scikit-learn」や「Tensorflow」、「Keras」などのPythonのライブラリを使用することで比較的簡単に行う事ができます。

教師あり学習と教師なし学習

教師あり学習と教師なし学習についてはこちらの記事でも詳しく記載していますので、是非ご参照ください。[kanren id="585"]

機械学習では、ひとつの判断を下すために利用する大量のデータをどのように使って学習するのでしょうか。


その方法は2つあります。教師あり学習 と 教師なし学習 です。


2つの違いは、簡単に言えば「答えがあるか無いか」です。学習に使うデータに答えがある場合が「教師あり学習」、答えの無い場合が「教師なし学習」となります。


写真をみて「これは○○の写真だ」と判断出来る場合には教師あり学習を使います。


一方で、将来の予測を行う際には教師なし学習を使います。過去のデータを学習した上でデータの推移の傾向を分析し、その分析結果を基に「今までの蓄積されたデータの値はがこの様であれば、将来のデータは○○ではないか」と予測を立てます

 強化学習

強化学習についてはこちらの記事でも詳しく説明していますので、是非ご参照ください。[kanren id="585"]

教師あり学習や教師なし学習とは違い、コンピュータ自体が試行錯誤を繰り返す中で「より良い行動をしたら良いデータを得られる」というルールで学習を続けていき、その瞬間瞬間での最良な判断を繰り返していく手法が 強化学習 です。


AlphaGO というAIの強化学習でできた囲碁をご存知でしょうか。

AlphaGoアルファ碁、アルファご)は、Google DeepMindによって開発されたコンピュータ囲碁プログラムであり、2015年10月に、人間のプロ囲碁棋士を互先(ハンディキャップなし)で破った初のコンピュータ囲碁プログラムとなったAIの囲碁です。
>> 【Wikipedia】AlphaGo


このAlphaGoは最初のデータは、インターネット上に存在する大量の将棋・囲碁の手の内を「教師あり学習」で学習させます。


ある程度学習を行ったらAI同士で対局させて、その中で強化学習を行う(より良い手を打ったら報酬を与える)ことで、AIとしての能力を自力で向上させます。


ゲームでも活用している動画がYouTubeに落ちていたりしますが、この強化学習こそ今後の医療の発展には必要不可欠なのではないかと考えます。

教師あり学習のうちの分類と回帰

学習したAIから得られるデータ(又は、データを分析する方法)には 分類 と 回帰 の2つに分ける事ができます。


なお、この分類と回帰は教師あり学習に分類されます。

分類「カテゴリーを予測する」

「これは○○の写真だ」とコンピュータが判断するのは分類に該当します。
解答が与えられていない画像から、正解の画像を正確に予測し抽出出来るのが分類だととらえてください。


とらえたデータをもとに解析して、特徴を把握した上で「これは○○だ」と分類するわけです。

回帰「数値を予測する」

それに対して「病気の発症率」や「家賃の価格」など、連続的な数値について予測するのが回帰です。


単回帰分析や重回帰分析などがありますが、回帰では統計学の知識や計算を使います。

scikit-learn

機械学習を行うツールやライブラリには色々なものがありますが、 その一つとしてscikit-learn というライブラリがあります。


Pythonでは機械学習や深層学習を行う上で有用なライブラリが数多くあります。例えば、深層学習を学習する際には「Tensorflow」や「Keras」、「scikit-learn」があります。


その中でも scikit-learn は機械学習において初心者でも使いやすい特徴があるため、非常に人気のライブラリです。


機械学習の特定の分野についてプログラムを作りたい場合は、他のライブラリの導入を検討した方が良い場合もあります。

まとめ:機械学習の概要について

機械学習 入門

如何でしたでしょうか。


機会学習についての概要についてまとめました。


巷でAI、機会学習、ディープラーニングと言われていますが、まずはAI・機械学習・ディープラーニング・強化あり学習・強化なし学習・回帰・分類について相関関係を把握する事で理解が深まると思います。


皆様の知識の整理のお役に立てれば幸いです。


-機械学習
-,

Copyright© Tommy blog  , 2020 All Rights Reserved Powered by AFFINGER5.