機械学習
Machine Learning ・ きかいがくしゅう
データからパターンを学び、明示的にプログラムせずに予測・判断を行わせる手法の総称。
✦ 30秒で試す — 航海ルールを1行も書かずに、迷惑メールを見分けさせる学習に使っていない16通での正解率は?予想してみる概要
機械学習は、人間がルールを一つひとつ書く代わりに、大量のデータからコンピュータ自身にパターンを見つけさせる手法の総称です。従来のプログラミングが「入力とルールを与えて出力を得る」営みだとすれば、機械学習は「入力と正解の例を与えてルールそのものを得る」営みだと言えます。得られたルールは「モデル」と呼ばれ、まだ見たことのないデータに対する予測や分類に使われます。
迷惑メールの判定、商品のレコメンド、需要予測、画像認識、そしてLLMによる文章生成まで、現代のソフトウェアの「賢く見える」部分の多くは機械学習が担っています。SEにとっても、機械学習そのものを実装しなくても、モデルをAPIとして呼び出したり、学習用データの基盤を整えたりと、関わる場面が急速に増えている領域です。
なぜ生まれたか
「迷惑メールを判定するプログラムを書いてください」と言われたとき、ルールベースの発想では「本文に『無料』があればスパム」「送信元がこのドメインならスパム」のような条件を人間が列挙していくことになります。しかし現実のスパムは表記を揺らし、手口を変え続けるため、ルールは書いても書いても追いつかず、しかもルール同士が干渉して保守不能になっていきます。手書き文字の認識のように、そもそも人間が判定基準を言語化できない問題も数多くあります。
そこで発想を逆転させたのが機械学習です。「スパムの例」と「正常なメールの例」を大量に与え、両者を分ける基準はコンピュータに統計的に見つけさせる。ルールを書く仕事が「良いデータを集めて正解を付ける」仕事に置き換わり、手口が変わればデータを足して学習し直せばよい。人間には書き切れない複雑なパターンを扱えるようにしたこの転換が、機械学習の出発点です。
この考え方自体は古く、1959年に IBM の Arthur Samuel が、自分自身と対戦しながら強くなるチェッカー(西洋碁)のプログラムの論文で machine learning という言葉を使っています。迷惑メールの判定でも、1998年に単語の出現頻度から確率を計算するベイズ的なフィルタが提案され、2002年ごろから広く使われるようになりました。その後、ウェブの普及で集まる大量のデータと計算力の伸びが、統計的に学ぶ手法を実用の中心へ押し上げていきます。
詳細
学習の三つの流儀 — 教師あり・教師なし・強化学習
機械学習は、正解の与え方によって大きく三つに分かれ、近年はそこに四つ目が加わりました。教師あり学習は「入力と正解のペア」から学ぶ方式で、メールにスパム/非スパムのラベルを付けて分類器を作る、過去の売上から来月を予測する、といった実務の大半を占めます。教師なし学習は正解ラベルなしでデータの構造そのものを見つける方式で、顧客を似た者同士のグループに分けるクラスタリングや、多次元のデータを少ない軸にまとめる次元削減が代表例です。強化学習は正解の代わりに「報酬」を与え、試行錯誤を通じて良い行動を学ばせる方式で、ゲームAIやロボット制御のほか、LLMを人間の好みに合わせて調整するRLHFでも使われています。
四つ目の自己教師あり学習は、ラベルのないデータから「隠した部分を当てる」問題を自動で作り、教師あり学習と同じ形で学ぶ方式です。文章の次の語を当てるLLMの事前学習や、文や画像を意味の近さで数値ベクトルに変える現代の埋め込みは、この方式で作られています。人手のラベルが要らないので、ウェブ規模のデータをそのまま学習に使えるのが強みです。
学習と推論 — 二つのフェーズを区別する
機械学習のシステムを理解するうえで最も重要な区別が、**学習(training)と推論(inference)**です。学習は、データを繰り返し読み込んでモデル内部のパラメータを少しずつ調整していく重い処理で、GPUを並べて数時間から数か月かけることもあります。一方の推論は、学習済みモデルに新しい入力を与えて答えを一回計算するだけの比較的軽い処理で、本番サービスに組み込まれるのはこちらです。
この区別は実務に直結します。学習には大量のデータと計算資源が要るため、データウェアハウスやETLパイプラインといったデータ基盤の整備が前提になります。一方、推論はユーザーのリクエストごとに走るため、レイテンシとスループット、スケーリングといった通常のサービス運用の関心事になります。「モデルを作る仕事」と「モデルを動かし続ける仕事」は、要求されるスキルもインフラも別物なのです。
代表的な手法とモデルの選び方
機械学習の手法は一つではありません。数値の傾向を直線で捉える線形回帰、条件分岐の木を多数組み合わせる決定木・勾配ブースティング、そして脳の神経回路を模したニューラルネットワークまで、問題の性質とデータ量に応じて使い分けます。表形式の業務データでは今でも勾配ブースティング系の手法が強力で、画像・音声・自然言語のような複雑なデータでは、ニューラルネットワークを深く重ねた深層学習が圧倒的な性能を発揮します。近年のLLMはその延長線上にあり、Transformerという構造のニューラルネットワークを桁外れの規模で学習させたものです。既製の大規模モデルを自分のタスクに合わせて追加学習するファインチューニングのように、「ゼロから学習しない」選択肢も一般化しています。
落とし穴 — 過学習とデータ品質
機械学習で最も古典的な失敗が**過学習(overfitting)**です。モデルが学習データを丸暗記してしまい、手元のデータでは高精度なのに、未知のデータではまるで当たらない状態を指します。逆に、モデルが単純すぎてパターンを捉えきれない未学習(underfitting)もあり、両者のバランスを取ることがモデル開発の中心的な作業になります。
過学習を見抜く鉄則は、モデルが見たことのないデータで性能を測ることです。実務ではデータを三つに分けます。重みの調整に使う学習用、手法や設定(モデルの大きさ・学習の回数など)を選ぶために繰り返し見る検証用、そして最後に一度だけ使って本当の実力を測るテスト用です。検証用のデータで何度も設定を選んでいると、そのデータにも少しずつ合わせ込んでしまうので、最終的な評価には手を付けていないテスト用を残しておきます。データが少ないときは、学習用と検証用の分け方を何通りも変えて平均を取る交差検証(k 分割交差検証)で、分け方の偶然に左右されにくい評価をします。
下の部品で、例を置いてモデルに学習させ、伏せてある評価用のメールをめくってみてください。境界線を引くのはモデルで、あなたが書くのは例だけです。わざとラベルを間違えた例を置くと、境界がどう歪むかも見えます。
下の「置く例」で種類を選び、平面を押して例を置いてください。置くたびにモデルが学習し直し、金の境界線が引き直されます。ルールは1行も書きません。
もう一つの落とし穴はデータそのものです。機械学習は「Garbage In, Garbage Out」の世界で、ラベルの誤り、偏ったサンプル、本番では手に入らない情報の混入(リーク)があれば、どんな高級な手法を使っても結果は歪みます。過去の偏った判断をそのまま学習すれば、その偏見をモデルが再生産するという公平性の問題も無視できません。実務の機械学習は「アルゴリズムの選択」よりも「データの品質管理」に時間を使う仕事だと言われるほどです。さらにモデルは一度作って終わりではなく、世の中の変化でデータの分布が変わると性能が静かに劣化していく(ドリフト)ため、監視と再学習を続ける運用体制までを含めて設計する必要があります。
試問
迷惑メールの判定モデルを作るために、手元のメールを3つに分けました。重みの調整に使う「学習用」、手法や設定を選ぶために繰り返し見る「検証用」、最後に一度だけ実力を測る「テスト用」です。開発の中の8つの作業を、どのデータで行うかに振り分けてください。
モデル開発の8つの作業を、学習用・検証用・テスト用のどのデータで行うかに仕分けよ
項目を選んでから、入れる箱を選びます
