機械学習とは、例やフィードバックからパターンを学習し、そのパターンを使って、まだ見たことのない事例に対する有用な予測、判断、出力を行うソフトウェアを構築する方法です。機械学習は人工知能における一つのアプローチであり、AI全体の同義語ではありません。

重要な言葉はパターンではありません。有用であることです。データセットには無数の規則性が含まれています。機械学習システムには、定義されたタスクと、どの規則性がそのタスクに役立つかを判断する方法が必要です。

基本的な考え方

スパムフィルターを作ることを想像してみましょう。

通常のルールベースプログラミングでは、「このフレーズを含み、リンクが3つを超えるメッセージをスパムとしてマークする」といった指示を書くかもしれません。しかし、スパマーは表現を変え、正当なメッセージがルールに該当することもあり、ルールの一覧は保守しにくくなります。

機械学習では、スパムと正当なメールを人が確認した例を用意します。また、モデルの種類と、その誤りを評価するスコアも選びます。すると学習アルゴリズムがモデルを調整し、出力が確認済みの例によりよく一致するようにします。

結果としてできるものは依然としてソフトウェアです。違いは、その振る舞いの一部がどこから生じるかにあります。プログラマーは学習手順とその境界を記述し、学習によってその境界内の多くの設定が決まります。

そのため、よく使われる「明示的にプログラムされることなく」という表現は誤解を招くことがあります。システムはプログラムされていますが、その完全な判断ルールが事例ごとにすべて書かれているわけではありません。

学習の意味

機械学習の問題を見分けるには、次の4つの要素を特定すると役立ちます。

  1. タスク。 システムは何をすべきでしょうか。メールを分類する、配送時間を推定する、似た顧客をグループ化する、行動を選択する、といった例があります。
  2. 経験。 何から学習できるでしょうか。ラベル付きの例、ラベルのない観測データ、過去のインタラクション、試行錯誤から得られる報酬などが考えられます。
  3. 成功の尺度。 何をもって、ある結果が別の結果より優れていると判断するのでしょうか。予測誤差、グループ分けの質、累積報酬などが考えられます。
  4. 調整可能な部分を持つモデル。 学習プロセスは、どの範囲の可能なルールを探索できるのでしょうか。

経験によって調整可能な部分が変化し、選んだ尺度が改善されるとき、学習が起こります。学習後に得られた結果をモデルと呼びます。そのモデルを新しい事例に使うことは、モデルを学習することとは別です。

この区別は重要です。導入済みのモデルの多くは、新しいリクエストごとに自動的に学習するわけではありません。誰かが別の学習または更新プロセスを実行するまで、学習済みの設定は固定されたままです。

機械学習の仕組み

詳細は異なりますが、典型的なプロジェクトは次のループに従います。

  1. タスクと、重要な現実世界の成果を定義する。
  2. モデルが使われる状況を代表する例を収集し、準備する。
  3. 入力をどのように表現するか、またどのような形式のモデルを許可するかを選ぶ。
  4. 目的関数、つまり候補モデルを数値で評価する方法を定義する。
  5. より良い目的関数のスコアを持つ設定を探索する学習アルゴリズムを実行する。
  6. 選択に使う別のデータと、まだ使っていないテストセットを用意し、新しい事例に対する性能を推定する。
  7. 学習済みモデルを導入し、その振る舞いを監視する。データや要件が変化したら、再学習するか置き換える。

流れは次のとおりです。

historical examples + a success measure
                  |
                  v
          learning algorithm
          adjusts model settings
                  |
                  v
            trained model  <----- held-out examples test generalization
                  |
             new input
                  |
                  v
       prediction, decision, or output

学習アルゴリズムと学習済みモデルは同じものではありません。アルゴリズムは適合させるプロセスです。モデルは、入力を処理するために適合された結果です。

多くの教師ありモデルでは、適合は繰り返し修正するプロセスです。モデルは学習例に対して予測を行い、損失関数がその誤りを数値に変換します。最適化手法がモデルの設定を変更し、その損失を減らします。これを繰り返すと、学習時の性能を改善できます。

学習時の損失を下げることが最終目標ではありません。モデルは学習例の細部を暗記し、新しい例では失敗することがあります。これが過学習です。機械学習が成功するのは、モデルが汎化するときです。つまり、扱うことを想定した条件から得られる、新しく関連性のある事例に対しても良好に機能することです。

だからこそ、評価データは学習から除外しなければなりません。テスト例が特徴量の選択、前処理、またはモデルの選択の繰り返しに影響すると、境界を越えて情報が漏洩します。その結果、スコアがモデルの実際の性能より良く見えることがあります。

実例:スパムフィルター

人が確認したメールが1,000通あり、そのうち500通がスパム、500通が正当なメールだとします。

モデルに関する判断を行う前に、200通を取り分けます。これがテストセットです。残りの800通を学習材料にします。各メッセージについて、含まれる単語、リンク数、送信者が以前に現れたことがあるかどうか、といったシグナルを表現できます。

最初は、モデルの調整可能な設定は役に立ちません。学習中、学習器は各学習例のラベルを予測し、誤りを測定して、設定を変更します。多くのスパムメッセージに関連するフレーズは影響度が高くなるかもしれません。既知の送信者は、スコアを正当なメール側に動かすかもしれません。これらは普遍的なルールではなく、学習された関連付けです。

学習とモデル選択の後、未使用の200通で最終モデルを一度だけ評価します。結果が次のようになったとします。

  • スパム90通を正しくブロック
  • 正当なメール94通を正しく許可
  • スパム10通を見逃す
  • 正当なメール6通を誤ってブロック

200通中184通を正しく分類したため、この例におけるテストでの正解率は92%です。

しかし、この数字だけで分析が終わるわけではありません。正当なメールを6通ブロックすることは、スパムを10通見逃すことよりコストが高いかもしれません。正当なメールをより少なくブロックするために判断のしきい値を変更し、その代わりに見逃すスパムを増やすこともできます。適切なトレードオフはデータだけでなく、タスクから決まります。

ここで新しいメールが届き、スパムスコアが0.82になったとします。このスコアを生成することは、学習済みモデルの利用です。モデルがそのメールから必ず学習するわけではありません。後で人々が新しいメッセージを確認すれば、その確認結果が将来の学習実行における経験になる可能性があります。

92%という結果も条件付きです。テストセットが十分に大きく、将来のメールに似ている場合に限り、将来の性能を推定します。言葉遣い、送信者、攻撃手法の変化によって、昨日のモデルが役に立たなくなることがあります。

モデルが学習シグナルを受け取る主な方法

機械学習の分類は重なり合いますが、3つの大まかな学習設定が役立ちます。

  • 教師あり学習は、スパムまたは正当なメールとラベル付けされたメールのように、望ましい答えと対になった例を使います。
  • 教師なし学習では、各例に与えられた答えはありません。その代わりに、似た項目のグループ化など、構造を明らかにする目的関数を最適化します。
  • 強化学習では、環境内で取った行動から得られる報酬や罰を使います。多くの場合、ある行動が次に起こることへ影響します。

その他のラベルは、混合型や別の側面を表します。半教師あり学習は、ラベル付き例とラベルのない例を組み合わせます。自己教師あり学習は、データ自体から学習目標を構成します。生成モデルは新しいサンプルを生成するよう学習しますが、複数の学習設定で訓練されることがあります。

これらの分類はシステムを説明するための道具であり、すべての情報源が同じように使う厳密な区分ではありません。

機械学習が重要な理由

機械学習は、望ましい振る舞いを完全なルールの集合として表現するよりも、実例で示したり測定したりするほうが簡単な場合に役立ちます。

音声波形と単語を結び付けるすべてのルールを書くより、音声の例にラベルを付けるほうが簡単です。交通量、天候、道路工事、時刻の相互作用をすべて手作業でコード化するより、移動時間を記録するほうが簡単です。短いチェックリストでは明確に区別できない場合でも、不正な取引と正当な取引の例を集めることができます。

学習によって人間の作業がなくなるわけではありません。作業の内容が変わるのです。人々は、何を予測するか、誰のデータを反映するか、どの誤りが重要か、そして出力を安全に利用できるかを判断します。また、周辺のソフトウェアを保守し、導入後に何が起きているかを監視します。

通常のルールが明確で安定しており、検証しやすい場合、機械学習は適していません。明示的な法的ルールによる税計算は、機械学習が利用できるからといって、統計的な推測に変えるべきではありません。

よくある誤解

モデルは人間のように学習する

「学習」とは、経験によって測定可能な変化が起こることを指します。意識、理解、人間の学習プロセスを意味するものではありません。モデルは入力の意味を知らなくても、ある狭いタスクの精度を高めることがあります。

データがモデルにすべてを教える

データだけでは、タスク、目的関数、表現方法、許容できる誤りは決まりません。すべての学習システムには、どのパターンを見つけ、どれを優先できるかについての仮定が含まれています。こうした選択が結果を形作ります。

学習時の性能が良ければモデルは機能する

モデルは学習材料を暗記することがあります。適切に分離され、代表性のあるデータでの性能のほうが、再利用可能な何かを学習したかどうかを判断するより良いテストになります。

データを増やせば必ず問題が解決する

関連性が高く、適切に測定されたデータを増やすことは役立ちます。しかし、重複したデータ、偏ったデータ、誤ったラベルのデータ、古いデータ、無関係なデータを増やすと、誤った振る舞いを強めることがあります。量だけでなく、網羅性と品質も重要です。

予測は原因を説明する

モデルは、2つのシグナルが連動していることを見つけ、一方を使って他方を予測することがあります。しかし、それは一方を変えれば他方も変わるということを示してはいません。因果関係の主張には通常、より強い仮定や統制された実験が必要です。

AIと機械学習は互換可能な言葉である

機械学習はAIシステムを構築する主要な方法ですが、ルール、探索、計画などの技術でもAIと呼ばれる振る舞いを実現できます。現代の製品は、学習済みモデルと、相当量の学習を伴わないソフトウェアを組み合わせていることがあります。

機械学習がAIシステムに組み込まれる場所

機械学習は、学習済みモデルを生成または更新するプロセスです。モデルは一つの構成要素にすぎません。アプリケーションは、その周囲にデータ収集、インターフェース、ビジネスルール、安全確認、保存、監視を加えます。

ニューラルネットワークはモデル設計の一つの可能性であり、機械学習の別名ではありません。学習は、学習プロセスがモデルを適合させる段階です。推論は、学習済みモデルが新しい入力を処理する段階です。これらの要素を分けて考えると、製品に関する主張を評価しやすくなります。

次に読むもの

ニューラルネットワークとは?」を読んで、広く使われている機械学習モデルの一種を見てみましょう。次に「AIにおける学習とは?」で適合プロセスを、「AIにおける推論とは?」で学習済みモデルが使われるときに何が起こるかを学びましょう。