第1章: 機械学習とは何か
明示的プログラミング vs 機械学習
従来のプログラミング
人間がルールを明示的に記述し、コンピュータはそのルールに従って処理を実行する。
入力:データ + プログラム(ルール)→ 出力:結果
機械学習
コンピュータがデータからルール(パターン)を自動的に発見する。
入力:データ + 結果(正解)→ 出力:プログラム(モデル)
例:手書き数字の認識
- 従来:「3は2つの半円が縦に並ぶ」などのルールを人間が記述 → 例外だらけで破綻
- 機械学習:大量の手書き数字画像と正解ラベルから、パターンを自動学習
パターンの発見
パターン認識
機械学習の本質は、データの中に潜む規則性(パターン)を発見すること。
なぜ機械学習が有効か?
- 人間がルールを言語化できない複雑なパターン(顔認識、音声認識など)
- 膨大な変数が絡む問題(レコメンデーション、金融予測など)
- 環境が変化し続ける問題(スパムフィルタ、異常検知など)
予測と汎化
予測(Prediction)
学習したパターン(モデル)を使って、新しいデータに対する出力を推定すること。
汎化(Generalization)
訓練データだけでなく、未知のデータに対しても正しく予測できる能力。
これが機械学習における最も重要な目標である。
例:住宅価格の予測
- 訓練:過去の住宅データ(面積、築年数、価格)からパターンを学習
- 予測:新しい物件の面積・築年数から価格を推定
重要なのは、訓練データにない物件に対しても妥当な予測ができること(汎化)。
機械学習の定義
Mitchell (1997) の定義
「コンピュータプログラムが、あるタスク T と性能指標 P に関して、経験 E から学習するとは、E によって T における P が改善されることをいう。」
これは要するに、「経験を積むことで、やるべきことが上手くなるなら、それは学習である」ということである。人間が勉強や練習で上達するのと同じ考え方を、コンピュータプログラムに当てはめている。
- タスク T(何をするか):プログラムが達成すべき目標
- 性能指標 P(どれくらい上手いか):タスクの出来を測るものさし
- 経験 E(何から学ぶか):プログラムに与えるデータや試行の蓄積
つまり、データ(E)を与えるほど成績(P)が良くなるプログラムは「学習している」と言える。以下の具体例で確認する。
具体例:チェスプログラム
- タスク T:チェスをプレイすること
- 性能指標 P:対戦の勝率
- 経験 E:過去の対戦データ
→ 対戦を重ねる(E)ことで、勝率(P)が向上すれば「学習している」。
具体例:メール分類
- タスク T:メールをスパム/非スパムに分類
- 性能指標 P:分類の正解率
- 経験 E:「スパム」か「非スパム」かの正解が付いたメールデータ
→ ラベル付きメールデータ(E)を多く学ぶほど、分類の正解率(P)が上がれば「学習している」。
まとめ
- 機械学習:データからパターンを自動的に学習するアプローチ
- 従来との違い:ルールを人間が書くのではなく、データから発見
- パターン発見:データに潜む規則性を見つけ出す
- 汎化:未知のデータにも対応できることが最重要
よくある質問
Q. 機械学習とは何ですか?
コンピュータがデータからパターンを自動的に発見し、未知のデータに対して予測を行う技術である。従来のプログラミングでは人間がルールを明示的に記述するが、機械学習ではデータと正解を与えることでコンピュータが自らルール(モデル)を学習する。
Q. 従来のプログラミングと機械学習の違いは何ですか?
従来のプログラミングでは「データ+ルール→結果」という流れで、人間がルールを書く。一方、機械学習では「データ+正解→モデル」という流れで、コンピュータがデータからルール(モデル)を自動的に発見する。手書き数字の認識のように、人間がルールを言語化しにくい問題で特に有効である。
Q. 汎化とは何ですか?
訓練データだけでなく、未知のデータに対しても正しく予測できる能力のことである。機械学習の最も重要な目標であり、訓練データに適合しすぎて汎化性能が低下する現象を「過学習(オーバーフィッティング)」と呼ぶ。
参考資料
- Mitchell, T. M. (1997). Machine Learning. McGraw-Hill. — 本章で紹介した機械学習の定義の出典
- 機械学習 — Wikipedia
- パターン認識 — Wikipedia
- 汎化能力 — Wikipedia