機械学習とは
Machine Learning / ML
明示的なルールを人手でプログラムする代わりに、データからパターンを学習し予測・判断するアルゴリズムの総称
ひとことで言うと
ルールを人が書く代わりに、データからパターンを学ばせてAIに予測や判断をさせる技術全般。
概要
機械学習とは、タスクを解くルールを人間が逐一プログラムするのではなく、データからパターンや規則性を学習し、未知の入力に対する予測・判断を行えるようにするアルゴリズムの総称。 学習方式によって、正解ラベル付きデータから入出力の関係を学ぶ教師あり学習、ラベルなしデータから構造やパターンを見出す教師なし学習、環境との試行錯誤を通じて報酬を最大化する行動を学ぶ強化学習に大別される。 深層学習は、多層ニューラルネットワークを用いる機械学習のサブカテゴリの1つであり、画像認識・自然言語処理等の分野で従来の機械学習手法を大きく上回る性能を示したことで、現在のAIブームの中核技術になっている。
背景
画像認識や音声認識のように、判断基準を人間が明示的なルールとして書き下すのが難しいタスクは多く存在した。 機械学習は、こうしたタスクをデータから帰納的に学習させることで解決するアプローチとして発展してきた。
歴史
1959年: Arthur Samuelが、チェッカーゲームのプログラムに関する論文の中で「機械学習」という用語を用いたとされる。 1997年: Tom Mitchellが著書「Machine Learning」で機械学習の定式化を体系的に整理。 2012年以降: 深層学習の急速な発展により、機械学習全体の応用範囲と性能が大きく拡大した。
アーキテクチャ
教師あり学習(回帰・分類)、教師なし学習(クラスタリング・次元削減)、強化学習(方策の学習)の3つに大別され、それぞれ異なるアルゴリズム(線形回帰・決定木・サポートベクターマシン・ニューラルネットワーク等)を用いて実装される。
ワークフロー
データを収集・前処理 → 学習用・検証用・テスト用に分割 → アルゴリズムを選択しモデルを学習 → 検証データで性能を評価しハイパーパラメータを調整 → テストデータで最終評価し、問題なければ本番環境へデプロイする。
コード例
scikit-learnで分類モデルを学習する
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
model = RandomForestClassifier()
model.fit(X_train, y_train)
print(model.score(X_test, y_test))利点
- 人間が明示的なルールを設計しにくいタスクでも、データから規則性を学習し対応できる
- 扱うデータ・タスクに応じて多様なアルゴリズムを選択でき、適用範囲が広い
- scikit-learn等の成熟したライブラリが整備されており、比較的手軽に実装・検証できる
欠点
- 学習には一定量以上のデータが必要で、データの偏りがそのまま予測の偏りにつながる
- モデルによっては判断根拠の解釈が難しく、なぜその予測に至ったかを説明しにくい場合がある
- 学習データと実運用時の入力データの分布のずれは、モデルの性能を大きく低下させうる
比較
関連用語
よくある質問
機械学習と深層学習の違いは?
機械学習はデータからパターンを学習する手法全般を指す広い概念。深層学習はその中でも多層ニューラルネットワークを用いる手法のサブカテゴリ。
参考文献
- Documentationscikit-learn Documentation