機械学習について勉強したいので調べてみたのですが、
同じ記事や同じ本をおすすめされてることが多かったので、自分なりにまとめてみました。
私は数学も機械学習も無知だし、まだ何も機械学習のコードを書いてません。
ただのリンク集になってます。
実際にやってみた画像認識の内容も含めたブログ記事はこちらです
機械学習をやるまえに
最初に機械学習で何をしたいのかを決めることが重要
ゴールを持つことが学習の進み具合を変えるらしい。
たしかに、やりたいことがあれば、勉強量も定着量も全然違う気がする。
無駄な知識を学ばないことも大切なんでしょう。
すべての理論を理解しようとしない。
機械学習は難しすぎるのでまず理解できないし、少しずつ簡単なものを実践して理解していくことが大切。
まずはコードを書く!
コードを書いていけば、なぜ動くのかをおおまかに理解していける。
数式や理論の理解は後回し、慣れろ、ってことですね。
「次元の呪い」というものがある
学習データをすべて学習させようとしても精度が出ないことが多々ある。
データを分類するために「データのどこに注目すればいいか」が、プログラムは判断できない。
特徴抽出
対象データから特徴となる量を抽出することが特徴抽出。
これで「データのどこに注目すればいいか」をプログラムに教えることができる。
よって、特徴抽出 → 特徴抽出したデータで学習させる という流れになる。
機械学習の流れ
-
データ収集
少なくとも100,000件くらいあるといいらしい。
深層学習では、数万件のパラメータは当然という程のビッグデータがあることで機能するという。
膨大なデータを処理するためには、高速な計算環境が必要。 -
データの整理
収集したデータは、一部欠落や不正データが入ってる場合があるため、情報を整理しなければならない。
SQLやBigData処理(分散処理など)のスキルが必要。 -
分析・分類
整理したデータの特徴を見極めたり、予測に必要なデータを推測する。
定量評価。 -
学習モデル作成
整理したデータから予測するモデルを作成する。
Pythonなどの開発言語で使う。
データの種類や目的によってアルゴリズムを選択(パラメータのチューニングなどのおすすめを出してくれるのもある)。
正規化も必要。 -
データの予測と実験
訓練データからつくった学習モデルで予測する。
学習〜テスト予測の実験を何度も繰り返す。
精度が良くても過学習の可能性がある。
AIは人間をアシストするもの
特徴抽出を行わなければならないという点からもわかるとおり、機械学習などAIは勝手に「こういう課題があるから、こういうことをやりたい」と考えて答えを導き出すことはない。
人間が膨大な量のデータを揃え、課題を与えることでしか機能しない。
課題を持った人間がやらなければならない大量のデータに対する分析を自動で行ってくれることで仕事をアシストしてくれるのがAIなんでしょう。
スライドで「機械学習とは」を感じよう
必ずと言っていいほど紹介されてる動画
関連する記事はこちら。
機械学習を1ヵ月で実践レベルにする #2 (オンライン講座)
Courseraの機械学習コースのススメ 前編
日本語なので聞きやすそうな動画
schoo: 現場で使えるデータ分析 講座
gacco: 社会人のためのデータサイエンス講座
これらの本は読んでおきたい
この2冊は、いろんな記事でオススメされてる頻出度高めの本だった。
なので、私もこの2冊は絶対読んでおく。
プログラムや理論がわからなくても、サンプルプログラムをコピペして動かすことが何よりも重要です。
マルコフ連鎖やLSTMなどを用いたテキスト解析、チャットボットの作成、深層学習による牛丼の認識、機械学習・深層学習に必須なデータ収集テクニックまで網羅。
以下の本も初心者にわかりやすそうな書評がありましたので記載。
実際に簡単なサンプルを試してみよう
Docker上で、TensorFlowを使って画風変換してみた。
機械学習にはたくさんの手法があることを知る
機械学習の情報を手法を中心にざっくり整理
機械学習を始めたくなる!機械学習アルゴリズム解説スライドまとめ
上記の記事は、機械学習の手法を網羅し、簡潔にまとめてある素晴らしい記事です。
スライドで「Deep learningとは」を感じよう
勉強のための 環境構築 をしよう
- ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換)
- Python で機械学習しよう!(環境構築 on Mac編)
勉強のためのプログラムを書こう
-
タイタニック生存者予測Tutorialの一覧
- 『タイタニック乗客の生存予測』を題材に、予測モデルをいちから作っていくチュートリアル
-
機械学習の Python との出会い| 機械学習の Python との出会い
- 単純ベイズ:入門編
- Numpy
- 単純ベイズ:上級編
- ロジスティック回帰
-
pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真 @Scaled_Wurm
- Pythonの機械学習ライブラリscikit-learn
のチュートリアル
- 補助
- - 機械学習 はじめよう - 第18回 ロジスティック回帰
以下のコードを用意し、こちらより実装する
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import optimize
plt.style.use('ggplot')
ライブラリごとの初歩記事
TensorFlow
Theano
THeano のチュートリアル
Weka
機械学習(データマイニング)ソフト
とある大学院生がこれを使って、GUIをポチポチして実装されたアルゴリズムでデータを自動分類していってたらしい。
Keras
真似していろいろつくってみよう
感情分析(Sentiment Analysis)
- [PythonでTwitterでのツイートをネガポジ判定してみた結果。。。](http://tt-
house.com/2013/08/twitter-nega-posi.html) - 深層学習でツイートの感情分析
- Twitter Stream APIデータに対して初歩的な感情分析を試みる。
- ディープラーニングを使って転職会議の企業クチコミデータを感情分析してみる
画像認識
- OpenCVでアニメ顔検出をやってみた
- ご注文はDeep Learningですか?
- ご注文は機械学習ですか?
- ディープラーニングでおそ松さんの六つ子は見分けられるのか?
- 準備編
- 実施編
- 機械学習で芸能人の顔を分類してみよう!
- ねこと画像処理 part 2 – 猫検出 (モデル配布) « Rest Term
- 「顔以外」のものを画像認識する on iOS
- ディープラーニングによる姿勢推定openposeで「男子の夢な(衣服の下を透視する)妄撮カメラ」を作ってみよう!?
- Googleの猫認識 (Deep Learning) - 大人になってからの再学習
- 画像認識によって焼きたてパンの種類を判断できるレジ装置
- 低解像度の画像から、自動車のナンバープレートのナンバーを識別
- 金貨が本物かどうか見極める - Qiita
- 食べられるキノコを見分ける - Qiita
テキスト処理
- 大量のニュースから興味関心のある話題をベイジアン分類で抽出する - Qiita
- twitter streamingAPIで突発的な流行語を抽出 - Qiita
- 英文の誤りを見つけ出し、ネイティブが書いたかのような文章に校正
- 指し手を「機械学習」することで将棋アルゴリズムを自動生成
- 最新記事のいいね!数を予測してみる - Qiita
- ナイーブベイズでツンデレ判定してみた - Qiita
- 東京都議会議員選挙の党派マニフェストを自動分類したよ - sleeping vote
なんだかすごそうな人の紹介
参照元記事
- 機械学習をこれから始める人に押さえておいてほしいこと
- 機械学習を始めて2週間、機械学習を始めるのに必要だったこと
- AIはproblem solvingマシンではない - ニューロサイエンスとマーケティングの間 - Being between Neuroscience and Marketing
- 数学を避けてきた社会人プログラマが機械学習の勉強を始める際の最短経路
- 機械学習を1ヵ月で実践レベルにする #1 (とっかかり編)
- 【機械学習入門】基礎から実践まで学び尽くそうを参考
- 【人工知能初心者向け】機械学習・Deep Learningプログラミング学習の道筋と参考書籍
- 機械学習を始めて2週間、機械学習を始めるのに必要だったこと
- データサイエンティストに興味があるならまずこの辺りを見ておきな、って文献・動画のまとめ(随時追加)
- 機械学習はじめの一歩に役立つ記事のまとめ
- 統計の素人だけどPythonで機械学習モデルを実装したい、そんな人のための第一歩