一から始める機械学習（機械学習概要）


## このページの対象読者、目的
### 対象読者
　・機械学習について一から勉強したい人が対象です

### 目的
　・機械学習の概要について理解する
　・人工知能と機械学習の違いについて理解する
　・ディープラーニングが話題になっている背景を理解する
　・機械学習の進歩の背景を理解する
　・更に勉強したい場合のおすすめの教材を理解する

## アジェンダ
1.   人工知能とは
2.   機械学習とは
3.   機械学習はどのようなことで使われているか
4.   学習の方法
5.   ニューラルネットワークとディープラーニング
6.   ディープラーニングがなぜすごいのか
7.   用語についてのまとめ
8.   人工知能とは何か？　世間の見方
9.   なぜ機械学習が話題となるほどの進歩を遂げているのか
10.   最後に
11.   更に勉強したい場合

プレゼンテーション版(PDF)がこちらにあります。
プレゼンテーションとしてみたい方はこちらをどうぞ
https://www.edocr.com/v/zy1dq0dz/tflare/Machine-Learning-Overview


続編はこちら
一から始める機械学習（Kaggleで学ぶ機械学習）
http://qiita.com/taki_tflare/items/8850ac5ba8b504a171aa


## 1. 人工知能とは
![一から始める機械学習（機械学習概要）___Machine_Learning_Overview_key.png](https://qiita-image-store.s3.amazonaws.com/0/118618/5d768b92-71ba-5931-1807-164567ccf07b.png)

人工知能とは何かについては専門家の中でも意見が分かれる問題です。
このページでは、下記とします。
・コンピュータ上で人間の知能を実現させるためのシステム（左記の研究から生まれた、知能の一部分を実現するための技術も指す）
・知能：調べる、計算する、予測する、判断する等
・現時点では、自分の意志を持つAIはまだできていない。しかし何かに特化して人間を超える能力を見せている。例えば人間のプロ囲碁棋士を破ったAlphaGo等

## 2. 機械学習とは
![スクリーンショット 2020-03-08 9.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118618/50a54609-e49c-5698-ca86-13e7e2f5fdf4.png)
機械学習とは大量のデータに対し、そこに潜むパターンを覚えさせ（学習）、未知のデータを判断するルール（モデル）を獲得させることである。
現在において、機械学習は金融工学、画像処理、自動運転、生物学など様々な分野に影響を与え始めています。

人工知能と機械学習の関連を図にすると以下になります。
ニューラルネットワーク、ディープラーニングは後で出てきます。
![ようごのついてもまと.png](https://qiita-image-store.s3.amazonaws.com/0/118618/2759c70c-acde-a8c3-60db-04ab2ac524bd.png "ようごのついてもまと.png")

## 3. 機械学習はどのようなことで使われているか
1. 分析
　A. クリックデータの分析
　　大規模なウエブサイトで、ウエブのクリックデータを集めて、機械学習を利用して解析し、ユーザに利便性を提供する。
　B. レコメンデーション
　　購買履歴をもとに好みを分析し、興味・関心がありそうな情報をもとに情報を提供する。
　　Amazonなどのショッピングサイトのおすすめや、Youtubeのおすすめ動画など

2. 認識
 A. 手書き認識
　　郵便物の配達において、一時的な仕分けをするのに使用されています。
　　またOCRの分野でも機械学習が使われています。
　B. 顔認識
　　最近スマートフォンに搭載されています。

3.  制御
　A. 自動運転
　　現在研究されている分野です。
　B. ロボット制御

4.  生成
　A. 音楽の作成
　B. 画像の作成
　C. 翻訳


また、個人的に面白いと思っている、実用例をお見せします。
5対5の対人ゲーム Dota2で人間に勝利できるようになっています。
![スクリーンショット 2019-04-02 10.16.09.png](https://qiita-image-store.s3.amazonaws.com/0/118618/db51795d-d68c-6bba-45e8-5048ba2daa33.png)
[OpenAI Five: Dota Gameplay](https://www.youtube.com/watch?v=UZHTNBMAfAA)　の画面の一部を表示

Dota2とは、MOBAと呼ばれるジャンルのゲームで他に有名なゲームだと「League of Legends」があります。
基本的なルールは、5対5で敵の本拠地を破壊すれば勝ちというものです。
ただ、そこに行き着くまでに様々な戦略が存在しています。
プレイ時間は1ゲーム30～90分程度で、平均45分です。

またEスポーツ上最大の賞金額のゲームでもあります。
Dota2 -The International 2016
　賞金総額　$ 20,770,640　(約23億)
　優勝賞金　$ 9,139,002　(約10億)

[OpenAIの人工知能「OpenAI Five」がDota 2の5対5バトルで人間チームに勝利](https://gigazine.net/news/20180626-openai-five-dota-2-defeating/)
[OpenAI Five 論文　Dota 2 with Large Scale Deep Reinforcement Learning](https://arxiv.org/abs/1912.06680)
[OpenAI Five(blog)](https://blog.openai.com/openai-five/)
[OpenAI Five(projects)](https://openai.com/projects/five/)



## 4. 学習の方法
![学習の方法.png](https://qiita-image-store.s3.amazonaws.com/0/118618/7e5c548f-d440-d206-908d-2f812974cebe.png "学習の方法.png")


### 4.1 学習の方法（教師あり学習）
![スクリーンショット 2019-04-05 10.18.19.png](https://qiita-image-store.s3.amazonaws.com/0/118618/a7316454-4966-90da-245b-e3aaf6dee754.png)


上記は分類の例、スパムかスパムでないかを学習させた後であれば、
スパムかどうかを自動的に判断してくれる。
最近のウエブメールでは、最初の段階で精度が高いスパムフィルターが搭載されているが
これはいろいろな人が、スパムかスパムでないかを送ることでデータが蓄積されたため。
当然、一般的なフィルタのため、誤判定になることがあり、その場合学習させることで自分にあったスパムフィルタにすることができる。

![スクリーンショット 2019-04-28 6.52.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118618/acc747cf-6eae-be20-bcb5-a99e49212a52.png)

![スクリーンショット 2019-04-28 6.54.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118618/c05dd977-9665-5991-fdd2-d0abe9612fd7.png)

![スクリーンショット 2019-04-15 8.58.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/118618/bdb9d2cc-5260-5075-d239-f291f8c6a70f.png)

差の合計が最小であれば、より良い予測になるということがわかります。

上記例では、どのようなモデルかわかりやすいです。
しかし、実際には、部屋の広さだけで賃貸価格は決まりません。最寄り駅、駅からの近さ、設備など様々な要因により賃貸価格は設定されます。

こういった変数が複数あるものでも機械学習であれば対応が可能になります。


### 4.2 学習の方法（教師なし学習）
![スクリーンショット 2019-04-05 10.48.49.png](https://qiita-image-store.s3.amazonaws.com/0/118618/f3094421-17f1-91e8-162b-af44b42a3c25.png)


上記は可視化の例、住宅価格が位置や人口密度と密接な関係があること、南の海岸線沿いの特定地域が特に住宅価格の中央値が高いことがわかる


### 4.3 学習の方法（強化学習）
![学習の方法（強化学習）.png](https://qiita-image-store.s3.amazonaws.com/0/118618/20192904-1f71-97b6-8a15-aeafd8d14326.png "学習の方法（強化学習）.png")

強化学習は環境における価値を最大化するようにエージェントを学習させる
強化学習では、その時の価値だけではなく
将来価値も含めた報酬を考慮して学習を行う。

どういうことか上記画像を例として簡単に説明すると、短期的には得点が上がる行動をとったとしても、次の行動で敵にやられてしまう行動をとってしまうと、将来的な得点が下がってしまうので、そうならないように学習を行うということ。

## 5. ニューラルネットワークとディープラーニング
ニューラルネットワークとは
機械学習の研究課題の一つで、人間の脳内に存在する神経細胞（ニューロン）の働きから着想を得て作成されたシステムです。
[注意]
人間の脳の働きはまだまだ解明されていないものがあります。あくまでも人間の脳の一部の働きから着想を得たものであるということを意識しておく必要があると考えます。


ディープラーニングとはニューラルネットワークを多層にしたもの
ILSVRC 2012（大規模画像認識の競技会）でディープラーニングで圧勝するなど
多数の結果があり、これにより画像認識の方向性を決定づけたといえる。

ニューラルネットワークとディープラーニングは画像認識、音声認識、自然言語処理などに力を発揮します。

## 6. ディープラーニングがなぜすごいのか
音声・画像認識等で人間を上回るレベルの結果が出てきている
　例えば大規模画像認識の競技会(ILSVRC 2015)で人間を上回った結果を出した

画像認識等で人間を上回るということは
「画像関連の事象について、人間が識別困難なものでも認識可能ということを意味し、例えば、将来的に医学診断で人間よりも効果のある診断ができることを意味していると考えられます。
これは様々な応用が可能であり、今後よりDeep Learningが重要となっていることを意味しています。」

「ILSVRCとは何か？」 より引用
http://qiita.com/taki_tflare/items/40bd1313d85513b4b861


「ディープラーニングによる画像認識は「目」の技術であり、生物が目を得た時と同じく、ロボットや機械の世界でも””カンブリア爆発””的なインパクトになりえる」
「AI白書2017」 p8 より引用

## 7. 用語についてのまとめ
![ようごのついてもまと.png](https://qiita-image-store.s3.amazonaws.com/0/118618/2759c70c-acde-a8c3-60db-04ab2ac524bd.png "ようごのついてもまと.png")


## 8. 人工知能とは何か？　世間の見方
レベル1 　単純な制御プログラムを「人工知能」と称している
　　　　　ごく単純な制御プログラムを搭載しているだけの製品　
レベル2　古典的な人工知能
　　　　　振る舞いのパターンが極めて多彩なもの
　　　　　例えば掃除ロボット
レベル3　機械学習を取り入れた人工知能
　　　　　検索エンジンに内蔵されていたり、
　　　　　ビックデータを元に自動的に判断したりするような人工知能
レベル4　ディープラーニングを取り入れた人工知能
　　　　　機械学習をする際のデータを表すために使われる変数自体を学習するもの

「人工知能は人間を超えるか」 松尾 豊 著 pp.51-52 参考


### 8.1 人工知能とは何か？　世間の見方 に対する私の考え
・全てにおいて、レベルが高いものが良いというわけではなく目的に応じて使い分ける必要がある。
・同じレベルであれば、すべて同じということではない。必要なタスクによって、適切な技術を選ぶ必要がある。
・製品を比較する際に人工知能が使われていますよというセールスに惑わされるのではなく、製品の機能を見て判断する必要がある


## 9. なぜ機械学習が話題となるほどの進歩を遂げているのか
学習進歩の3つの要因
・計算能力の向上
・大量データの取得が容易になった
・情報共有

### 9.1 計算能力の向上
機械学習へのGPU適用により、CPU単体に比べ、10倍以上のパフォーマンスがでるようになった。
学習にCPUで2日かかっていたところ、GPUを使用すれば5時間程度になる。
上記により試行回数が増えることになり、複数の手法、ハイパーパラメータの試行回数が増えることとなった。これにより進化が進みやすくなった。

参考：
　個人で環境を揃えるのであれば、「[Google Colab](https://colab.research.google.com/)」 が使えるか試してみたほうが良い。無料でGPU、TPUが利用できる。
もっと良いGPUなどが欲しい場合、「[Colab Pro](https://colab.research.google.com/signup)」という月9.99ドルの有料プランもある。

もしくは、「Cloud AutoML」 https://cloud.google.com/automl/ を検討に入れるのも良い選択肢と考える。
こちらは機械学習の知識がなくても利用できる。

Google、AIツール構築サービス「Cloud AutoML」の画像認識版をβに、自然言語と翻訳もβで追加
http://www.itmedia.co.jp/news/articles/1807/25/news066.htmlhttps://cloud.google.com/automl/


### 9.2  大量データの取得が容易になった
データセットの重要性が広がり、データセットが大量に公開された。
インターネット、スマートフォンの普及により、公開データが増えた。
上記により機械学習を行う上で、大変重要なデータが増えた。

オーブンデータ取得先まとめ
https://qiita.com/mnm_analytics/items/7296c5d6bb8769b18d24
各国政府、機関、大学などのデータへのリンク

データ分析サイトコンペションKaggleのデータのページです。色んな人が集めたデータがあります。
https://www.kaggle.com/datasets

以下2件は研究用データ
UC Irvine Machine Learning Repository!
https://archive.ics.uci.edu/ml/index.php

List of datasets for machine-learning research
https://en.wikipedia.org/wiki/List_of_datasets_for_machine-learning_research

機械学習を行う際に利用可能なデータセットのまとめ
https://github.com/arXivTimes/arXivTimes/tree/master/datasets

### 9.3  情報共有（arXiv.org）
arXiv.org：論文投稿サイト　物理、数学、コンピュータ科学等中心

昔：雑誌による投稿　査読で数ヶ月後に公開
今：arXiv.org　毎日更新

arXiv.orgに投稿されたものが次の日には、実装されそのパフォーマンスが出るか検証されることもある。

## 10.  最後に
問題への対応において今までは、人かルールベース（普通にプログラム）かの２つの選択肢があったが
これからは、人、ルールベース、機械学習の３つを組み合わせて考えたほうが良いと考える。

![一から始める機械学習（機械学習概要）___Machine_Learning_Overview_key.png](https://qiita-image-store.s3.amazonaws.com/0/118618/9a70267f-f269-85bd-f9ce-ba7b83a97061.png "一から始める機械学習（機械学習概要）___Machine_Learning_Overview_key.png")

・単純な条件であれば、ルールベースが一番解決度を上げられる。
・人間が簡単なルールで定義できる問題であれば、ルールベース（普通にプログラミング）の方が機械学習よりも解決度を上げられる。
・人のほうが基本的に解決度は高いが、うっかりや体調の問題があるため間違えることがある。また特定の人への依存への対応も必要である。
・機械学習では今までのルールベースでは対応が難く、人が行わなければならなかった問題へ対応できる場合がある。
・ルールベース、機械学習、人の組み合わせでゴールに向けて適切なものを選んで対応していく必要がある。
（人の解決度が安定しない場合をルールベース、機械学習を適切に組み合わせ実行するなど）


## 11. 更に勉強したい場合
人にうれしいAIのためのUXデザインガイド
http://storywriter.jp/pair/
GoogleのPeople + AI Guidebookの日本語版
ユーザとのコミュニケーションについて記載がある。特にメンタルモデルのページを見てほしい。

ディープラーニング入門：Chainer チュートリアル
https://tutorials.chainer.org/ja/tutorial.html
機械学習に使われる様々な基礎（数学、確率統計、Pythonなど）が公開されている。

自然言語処理
首都大学東京小町研のページが参考になります。
[自然言語処理を学ぶ推薦図書](http://cl.sd.tmu.ac.jp/prospective/readings)
[自然言語処理を独習したい人のために](http://cl.sd.tmu.ac.jp/prospective/prerequisite)

本であれば
自然言語処理 (放送大学教材)
自然言語処理についてこれから取り組みたい人におすすめします。必要な概念が網羅されています。
2019年に改訂版が出ていますのでこちらを買いましょう。

一から始める機械学習（Kaggleで学ぶ機械学習）
http://qiita.com/taki_tflare/items/8850ac5ba8b504a171aa
このページの続編です。

Best Deep Learning Courses: Updated for 2019
https://blog.floydhub.com/best-deep-learning-courses-updated-for-2019/
オンラインで見れるディープラーニング講義のまとめ

ニューラルネットワークと深層学習
http://nnadl-ja.github.io/nnadl_site_ja/index.html
ニューラルネットワークの仕組みが知りたい場合はこれをおすすめ

Machine Learning
https://www.coursera.org/learn/machine-learning
Andrew Ng 先生による Coursera の機械学習コース
日本語字幕あり　説明がわかりやすく、おすすめする人が多い

機械脳の時代――データサイエンスは戦略・組織・仕事をどう変えるのか?
https://www.diamond.co.jp/book/9784478039373.html
コマツ、本田技研などの事例が多いです。
後半はどのようにAIを作るのか、AIを作る組織を作るにはどうすればよいか等が書いてあります。

データサイエンティスト養成読本
http://gihyo.jp/book/2016/978-4-7741-8360-2
必要な情報がコンパクトに纏まっていておすすめ

ゼロから作るDeep Learning――Pythonで学ぶディープラーニングの理論と実装
https://www.oreilly.co.jp/books/9784873117584/
ディープラーニングの原理理解したい場合はこれをおすすめ

資格を通して勉強がしたい場合、統計検定をおすすめしています。
http://www.toukei-kentei.jp
大量データを扱う場合、統計が必要になります。
機械学習以外でも統計はこれからますます重要となる技術と考えます。
よっておすすめしています。

## 11.1  更に勉強したい場合（英語文献）

### 機械学習
CS229: Machine Learning
http://cs229.stanford.edu/syllabus-autumn2018.html
スタンフォード大学の講義資料　[動画(2018年版)](https://www.youtube.com/playlist?list=PLoROMvodv4rMiGQp3WXShtMGgzqpfVfbU)はこちら

### 画像関連
CS231n: Convolutional Neural Networks for Visual Recognition
http://cs231n.stanford.edu/2017/syllabus.html
スタンフォード大学の講義資料　[動画(2017年版)](https://www.youtube.com/playlist?list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv)はこちら

### fastaiライブラリ
https://github.com/fastai/fastbook
fastaiライブラリでディープラーニングの実装と理論や歴史的経緯などについて書かれている
Jupyter Notebook形式

### 自然言語処理
CS224n: Natural Language Processing with Deep Learning
http://web.stanford.edu/class/cs224n/
スタンフォード大学の講義資料　[動画(2019年版)](https://www.youtube.com/playlist?list=PLoROMvodv4rOhcuXMZkNm7j3fVwBBY42z)はこちら

new fast.ai course: A Code-First Introduction to Natural Language Processing
fast.aiの自然言語処理コース
https://www.fast.ai/2019/07/08/fastai-nlp/

### 強化学習
UCL Course on RL
http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html
https://www.youtube.com/watch?v=2pWv7GOvuf0&list=PL7-jPKtc4r78-wCZcQn5IqyuWhBZ8fOxT
AlphaGoを作ったDavid Silverさんの強化学習の講義 youtubeもある