15 AIとは:機械学習
アルゴリズムとは、タスクを実行するための決まった 一連の指示です。 よく書かれたレシピのように、タスクを簡単で混乱のないステップに分解します。
プログラミング言語は、コンピューターが従い実行できる言語です。プログラミング言語は人間と機械の理解の橋渡し役となります。究極的には、これらはオンとオフになるスイッチです。コンピューターにとって、画像、動画、指示はすべて1(スイッチオン)と0(スイッチオフ)で表現されます。
プログラミング言語で記述されると、アルゴリズムはプログラムになります。アプリケーションはエンドユーザー向けに書かれたプログラムです。
従来のプログラムはデータを取り込み、指示に従って出力します。初期のAIプログラムの多くは従来型のものでした。指示がデータに適応できないため、これらのプログラムは不完全な情報に基づく予測や自然言語処理(NLP)といったことがあまり得意ではありませんでした。
検索エンジンは、従来型のアルゴリズムと機械学習(ML)アルゴリズムの両方によって動かされています。従来型のプログラムとは対照的に、MLアルゴリズムはデータを分析してパターンを探し、これらのパターンやルールを用いて将来の決定や予測を行います。つまり、データや良例・悪例に基づいて、独自のレシピを見つけ出すのです。
これらのアルゴリズムは、複雑性が高くデータが欠落している状況に非常に適しています。また、自らのパフォーマンスを監視し、このフィードバックを活用して改善することもできます。
これは人間、特に従来の教育システムの外でスキルを学んでいる赤ちゃんを見るときとあまり変わりません。赤ちゃんは観察し、繰り返し、学び、学んだことを試し、改善します。必要に応じて即興もします。
しかし、機械と人間との類似性は表面的なものです。人間の観点からの「学習」は、機械の「学習」とは異なり、はるかに繊細で、複雑です。
分類問題

MLアプリケーションが一般的に行うタスクの一つが分類です。例えば「この写真は犬か猫か?」「この学生は苦戦しているか、試験に合格するか?」といった問題です。2つ以上のグループがあり、アプリケーションは新しいデータをそれらのいずれかに分類する必要があります。
トランプのパックを例に取りましょう。グループAとグループBに分けられ、あるパターンに従って二つの山に分けられています。新しいカード(ダイヤのエース)をグループAかグループBのどちらかに分類する必要があります。
まず、グループがどのように分割されているかを理解する必要があります – 例が必要です。グループAから4枚のカードとグループBから4枚を引きましょう。これら8つの例は私たちのトレーニングセットを形成します – パターンを見るのに役立つデータ – 結果を見るための「トレーニング」です。
右に示された配置を見せられると、私たちのほとんどはダイヤのエースがグループBに属していると推測します。指示など必要としません、なぜなら人間の脳は驚異的なパターン認識能力を備えているからです。では機械はこれをどのように行うのでしょうか?
MLアルゴリズムは強力な統計理論に基づいて構築されています。異なるアルゴリズムはそれぞれ異なる数学的方程式を基盤としており、その方程式は目の前の課題に適合するよう慎重に選択されなければいけません。データを選択し、特定の問題に関連するデータ特性を分析し、適切な機械学習アルゴリズムを選ぶのはプログラマーの仕事です。
データの重要性

上記のカード引きはいろいろな形で間違っていた可能性があります。画像を参照してください。1はカードが少なすぎて、推測は不可能です。2はもっと多くのカードがありますが、すべて同じマークです – ダイヤがどこに行くかを知る方法がありません。グループのサイズが同じでない場合、3は数字のカードがグループAにあり、絵柄のカードがグループBにあることを意味する可能性があります。
通常、MLの問題はより広範囲にわたり、トランプの束よりもはるかに大きなデータセットを伴います。トレーニングセットは統計分析の助けを借りて選ばれなければならず、さもなければエラーが発生します。優れたデータ選択は、他の種類のプログラム以上に、優れた機械学習アプリケーションにとって極めて重要です。MLには大量の関連データが必要です。最低限、基本的なMLモデルには、特徴の総数の10倍のデータポイントが含まれているべきです1。とはいえ、MLはノイズが多く、乱雑で矛盾したデータを扱うことにも特に適しています。
特徴抽出
上記のグループAとグループBの例を見せられたとき、最初に気づいたのはカードの色かもしれません。次に数字や文字、そしてマークでしょう。アルゴリズムにとって、これらの特徴はすべて明示的に入力されなければなりません。問題にとって何が重要かを自動的に判断することはできないのです。

興味のある特徴を選択するとき、プログラマーは自分自身に多くの質問をしなければなりません。どれだけの特徴だと少なすぎて役に立たないのか?どれだけの特徴だと多すぎるのか?どの特徴がタスクに関連しているのか?選択された特徴間の関係は何か – 一つの特徴は他の特徴に依存しているのか?選択された特徴で、出力が正確である可能性はあるのか?
プロセス
プログラマーがアプリケーションを作成する際には、データを取り込み、そこから特徴を抽出し、適切なMLアルゴリズム(プロセスを定義する数学的関数)を選択し、ラベル付きデータ(出力値が既知の場合、例えばグループAまたはグループBのように)を用いて学習させます。そうすることで、機械は問題の背後にあるパターンを理解します。
機械にとっての理解とは、それぞれの特徴に割り当てられた一連の数字 – 重み – の形をとります。重みを正しく割り当てることで、新しいカードがグループAまたはグループBに属している確率を計算することができます。通常、トレーニング段階では、プログラマーが手動で値を変更して機械を支援します。これをアプリケーションのチューニングと呼びます。
この作業が完了すると、実用化する前にプログラムをテストする必要があります。これには、トレーニングに使用されなかったラベル付きデータがプログラムに与えられます。これをテストデータと呼びます。機械が出力を予測するパフォーマンスが評価されます。満足のいくものと判断されたら、プログラムは実用化可能となります – 新しいデータを取り入れ、このデータに基づいて判断や予測を行う準備が整った状態です。
モデルはトレーニングとテストのデータセットで異なる動作をする可能性があるでしょうか?特徴の数がいずれのパフォーマンスにどのように影響するでしょうか?このビデオを見てください。
リアルタイムのパフォーマンスはその後、継続的に監視され、改善されます(より良い出力を得るために特徴の重みが調整されます)。
<!–
多くの場合、リアルタイムのパフォーマンスは、既存のデータで機械学習をテストした場合とは異なる結果をもたらします。実際のユーザーを対象とした実験は費用がかかり、労力を要し、リスクを伴うことが多いため、アルゴリズムは常に過去のユーザーデータを用いてテストされます。しかし、この方法ではユーザー行動への影響を評価できない可能性があります¹。このため、機械学習アプリケーションを運用開始後に包括的に評価することが重要です:
MLを実際に試してみたくなりましたか?このアクティビティをお試しください。
1 Theobald, O. Machine Learning For Absolute Beginners: A Plain English Introduction (Second Edition) (Machine Learning From Scratch Book 1) (p. 24). Scatterplot Press. Kindle Edition.
2 Konstan, J., Terveen, L., Human-centered recommender systems: Origins, advances, challenges, and opportunities, AI Magazine, 42(3), 31-42, 2021.