AIの仕組み/機械学習の基礎
機械学習の基礎
[編集]本章では、現代のAI(人工知能)の中核技術である機械学習の基本的な仕組みについて記述します。
機械学習とは
[編集]機械学習とは、「複数のデータから法則性を学習し、未知のデータを予測・判断する技術」です。 従来のプログラミングと機械学習には、アプローチに根本的な違いがあります。
- 従来のプログラミング(
演繹 的アプローチ) - 人間が「もしAならばBせよ」という明確な命令(ルール)を記述し、コンピューターはその通りに実行します。
- 迷惑メールの例では、人間が「タイトルに『当選』が含まれていたら迷惑メールフォルダに入れる」といった具体的な条件を定めます。従来のプログラミングでは、このような分類ルールを一つひとつ手作業で設定する必要がありました。
- 機械学習(
帰納 的アプローチ) - 機械学習では、人間はルールを記述しません。代わりに、大量の「データ」と「正解(またはゴール)」をコンピューターに与えます。コンピューターはデータの中から統計的なパターンを見つけ出し、自らルールを構築します。
- 迷惑メールの例では、数万件の通常メールと迷惑メールのデータを読み込ませ、コンピューター自身に、単語の出現頻度や送信元の傾向など、迷惑メールに共通する特徴を発見させます。
機械学習の発達により、画像認識や自然言語処理など、人間が論理的に説明しきれない複雑なタスクをコンピューターで扱えるようになりました。
データ前処理
[編集]機械学習において、アルゴリズムの選定と同じ程度、或いはそれ以上に重要なのがデータ前処理です。「ゴミを入れればゴミが出てくる(Garbage in, garbage out)」という格言がある通り、品質の悪いデータを学習させても、良いAIモデルは作成できません。収集した生のデータはそのままでは使えないことが多く、学習に適した形に整形する必要があります。
欠損値の処理
[編集]現実のデータには、記入漏れや測定ミスなどで値が存在しない「欠損値(null)」が含まれることがよくあります。多くの機械学習アルゴリズムは欠損値を含むデータを扱えないため、対処が必要です。
具体的な対処法として、主に除去と補完の2つが挙げられます。除去は、欠損値を含む行や列そのものを削除する手法であり、データ量が十分に多い場合に有効です。一方、除去によるデータ量の減少を避けたい場合は、平均値、中央値、最頻値などで穴埋めを行う補完が用いられます。ただし、補完は人工的な値が入ることで、データにバイアスが生じる可能性があるため注意が必要です。
データのスケーリング
[編集]データの単位や桁数を揃える処理です。例えば、「身長(例:170cm)」と「体重(例:60kg)」と「年収(例:500万円)」のように、桁数が大きく異なる特徴量をそのまま扱うと、数値の大きい項目が学習結果に過剰な影響を与えてしまうことがあります。
そのため、データを0から1の範囲に収める正規化や、データの平均を0、分散を1に変換する標準化といった処理を行い、各項目のスケールを統一します。
カテゴリ変数の数値化
[編集]コンピューターは「男性・女性」や「S・M・L」といった文字列(カテゴリ変数)を直接計算できません。これらを数値に変換する必要があります。
変換手法は変数の性質によって使い分けます。順序に意味がある場合(例:S, M, L)は、「S=0, M=1, L=2」のように整数に置き換えるラベルエンコーディングが適しています。 一方、順序に関係がない名義尺度(例:赤, 青, 緑)の場合は、該当する箇所だけ1(Hot)にするビット列(例:[1,0,0], [0,1,0]...)に変換するワンホットエンコーディングを用います。
学習のタイプ
[編集]機械学習を行うには、まず保有しているデータの特性と解決すべき課題を明確に定義する必要があります。そのうえで、学習データに「正解」が含まれているか、何を目的とするかによって、学習のタイプは主に以下の3つに分類され、使い分けられます。

教師あり学習
[編集]教師あり学習は、画像認識や音声認識、機械翻訳など、実用化されている多くのAIシステムで採用されている手法です。 この手法では、「入力データ」と「正解ラベル[1]」がセットになったデータ(教師データ)を使用します。
学習の仕組み
[編集]このプロセスは、学習者が問題集と解答を使って学習する過程に例えられます。まずモデルに入力データを見せて答えを予想させます。次に、その予想と正解ラベルを比較して誤差を確認し、その誤差が小さくなるようにモデル内部のパラメータを修正します。このプロセスを大量のデータで繰り返すことで、AIは入力と出力の間にある関係性を関数モデルとして獲得し、最終的に見たことのないデータに対してもその関数で処理することで、正解を予測できるようになります。
代表的なタスク
[編集]教師あり学習は、予測したい答えの種類によって、大きく分類と回帰の2つに分けられます。
教師なし学習
[編集]教師なし学習は、データに正解ラベルが付与されていない状態で学習を行う手法です。
入力データのみが与えられ、正解はありません。そのため、正解を予測するのではなく、未整理のデータ群から「構造」や「特徴」を人間が解釈可能な形で抽出することが目的となります。
人間による正解ラベルの付与(アノテーション)が不要であるため、データ作成にかかる時間とコストを大幅に削減できます。ウェブ上に存在する画像やテキストなど、ラベル付けされていない膨大なデータをそのまま学習に活用可能です。
代表的なタスク
[編集]教師なし学習には、主に以下の3つのタスクがあります。
- クラスタリング
- クラスタリングは、多数のデータを特徴が似ているもの同士のグループ(クラスター)に自動的に分ける手法です。具体的には、年齢や購買頻度といった多次元の顧客データを分析し、「安売り重視層」や「高級志向層」のようにグルーピングすることで、マーケティングなどに活用されます。
- なお、教師あり学習の「分類」とは異なります。分類では事前に「犬・猫」といった判定すべき枠が決まっていますが、クラスタリングではデータを分析してみるまで、どのようなグループが形成されるかは分かりません。
- 次元削減
- データの情報をできるだけ保ったまま、変数の数(次元)を減らす手法です。数十~数百の項目がある複雑なアンケート結果などを、人間が理解しやすい2次元や3次元のグラフに要約・可視化する際に活用されます。また、機械学習の計算量を削減するための前処理として利用されることもあります。
- 異常検知
- 全体のデータの傾向を学習し、そこから大きく外れた「稀なデータ」を見つけ出す手法です。普段の買い物パターンと異なる動きを見つけるクレジットカードの不正利用検知システムや、通常の振動音と異なる波形を捉える工場の機械の故障予兆検知システムなどに活用されます。
強化学習
[編集]強化学習は、教師あり学習や教師なし学習とはアプローチが異なり、試行錯誤しながら学習する手法です。正解のデータは与えられず、ある環境の中に置かれたエージェントが、自らの行動を通じて試行錯誤を繰り返し、得られる報酬を最大化するように学習します。
基本的な仕組み
[編集]強化学習のプロセスは、自転車の練習などに例えられます。 まずエージェントが何らかの「行動」(自転車のハンドルを右に切るなど)を行います。その行動の結果として「状態」が変化(バランスが崩れるなど)し、その良し悪しに応じて、設定された「報酬」や「罰」[3]が与えられます。
エージェントは、どのような行動をとれば最終的により多くの報酬を得られるかを、何度も失敗しながら学習し、最適な行動戦略(方策)を自律的に獲得します。
探索と利用
[編集]強化学習において重要なのが、「探索」と「利用」のバランス(トレードオフ)です。
- 探索
- まだ知らない、より良い方法を見つけるために、あえて過去に試したことのない新しい行動をとること。失敗のリスクがあります。
- 利用
- 過去の経験から、現時点で最も良いと分かっている行動をとること。安定して報酬を得られますが、それ以上の改善は見込めません。
この2つのバランスをとることで、AIは局所的な成功にとらわれず、長期的に最適な戦略を見つけ出します。囲碁AI(例:AlphaGo[4])やロボット制御などは、強化学習によるものです。
学習タイプのまとめ
[編集]3つの学習タイプの主な特徴は以下の通りです。
| 学習タイプ | データの特徴 | 目的 | 代表的な応用例 |
|---|---|---|---|
| 教師あり学習 | 問題と正解がセット | 未知のデータに対する予測 | 画像認識、売上予測、自動翻訳 |
| 教師なし学習 | データのみ | データの構造・パターンの発見 | 顧客の分析、データの可視化、異常検知 |
| 強化学習 | 環境からの報酬 | 最適な行動戦略の獲得 | ゲームAI、ロボット制御、自動運転 |
回帰と分類
[編集]教師あり学習は、予測したい正解(ターゲット)の種類によって、大きく回帰と分類の2つのタスクに分けられます。機械学習を適用する際は、解きたい問題がどちらに当てはまるかを見極める必要があります。
回帰
[編集]回帰とは、入力データから連続する数値を予測するタスクです。「いくらか?」「どれくらいか?」といった問いに答えるものと言えます。
具体的な例としては、駅からの距離や広さ、築年数といった条件から家賃や販売価格を算出する不動産価格の予測や、過去の販売実績、気象条件、広告費などの要因から来月の売上金額を見積もる売上予測などが挙げられます。また、株価や気温のように時間の経過とともに変化する数値を扱う時系列予測も回帰タスクの一種です。
分類
[編集]分類とは、入力データがどのクラス(カテゴリ)に属するかを予測するタスクです。「AかBか?」「どれに該当するか?」といった問いに答えるものです。答えは離散的[2]な値(ラベル)になります。
この分類タスクは、さらに答えの数によって2つに細分化されます。
答えが2つのどちらかになる問題は2値分類と呼ばれます。例えば、受信したメールがスパムか通常か、あるいは検査画像が陽性か陰性かといった事例がこれに該当します。
それに対し、答えが3つ以上のカテゴリの中から選ばれる問題は多クラス分類と呼ばれます。手書き数字画像が「0」~「9」のどれかを判定したり、画像に写っている花の種類を特定したりするタスクなどが挙げられます。
回帰と分類の比較
[編集]| タスク | 予測するもの | 出力の例 | 評価の観点 |
|---|---|---|---|
| 回帰 | 連続値 | 25.3度、¥1,500、80% | 予測値と実測値の誤差がいかに小さいか |
| 分類 | 離散値 | 犬/猫、合格/不合格 | 正解のラベルをどれだけ的中させたか |
モデルの評価
[編集]機械学習モデルを作成した際、そのモデルが、目的とするタスクにおいて十分な性能を有しているかを検証する必要があります。 機械学習においては、学習データに対して高い正答率を示すモデルが、必ずしも未知のデータに対して高い予測精度を持つとは限りません。
正解率
[編集]分類タスクにおいて最も基本的で直感的な評価指標が正解率です。これは、全データのうち、AIが正しく予測できたデータの割合を示します。
- 正解率 = 正解したデータ数 / 全データ数
- 正解率の落とし穴(不均衡データ)
- 正解率は分かりやすい指標ですが、データの偏り(不均衡)がある場合には注意が必要です。
- 例えば、「100人中99人が健康で、1人が病気」というデータがあったとします。このとき、AIが何も考えずに「全員健康」と予測したとしても、正解率は99%という高スコアが出てしまいます。しかし、このAIは病気の人を一人も見つけられていないため、診断システムとしては役に立ちません。
- このような場合、正解率だけでなく、適合率(病気と予測したうち実際に病気だった割合)や再現率(実際の病気の人をどれだけ見逃さなかったか)といった他の指標を併用して評価します。
過学習と未学習
[編集]学習の状態には、大きく分けて2つの失敗パターンがあります。

- モデルが学習データに過剰に適応しすぎた状態です。「過去問を丸暗記して満点を取れるが、数字が変わっただけの本番テストに対応できない」状態に例えられます。
- データに含まれるノイズまで暗記してしまい、未知のデータに対する予測精度(汎化性能)が下がってしまいます。
- 未学習
- モデルの学習が不足しており、データの背景にあるパターンを十分に捉えきれていない状態です。これは、勉強不足で試験に対応できない状態に相当します。
適切なAIモデルを作るには、未学習を脱しつつ、過学習に陥る手前で学習を止めたり、調整したりする必要があります。
汎化性能
[編集]モデルの評価において最終的に目指すべきなのは、汎化性能の向上です。
これは、「学習に使っていない未知のデータ」に対して、どれだけ正確な予測ができるかという能力を指します。 過学習に陥らず、かつ未学習でもない、適切なバランスのモデルが「汎化性能が高い」と言えます。
データの分割
[編集]正しく汎化性能を測るために、機械学習の現場ではデータを以下の3つに分割して運用することが一般的です。
- 訓練データ
- 教科書にあたるデータ。AIの学習に使用します。
- 検証データ
- 模擬試験にあたるデータ。学習の途中経過を確認し、モデルの設定を調整するために使用します。
- テストデータ
- 本番の試験にあたるデータ。学習が完了したモデルの最終的な性能評価に使用します。
テストデータを学習や調整に使うと、評価結果の公平性が損なわれるため、最終的な性能評価の段階まで使用してはなりません。
注釈
[編集]- ^ 教師あり学習、半教師あり学習において、それぞれの入力データに付けられる正解のデータのこと。
- ^ 2.0 2.1 値が連続しておらず、飛び飛びであること。
- ^ 例えば、転倒にはマイナス、前進にはプラスの報酬が与えられます。
- ^ Google傘下のGoogle DeepMindが開発した、囲碁の対局を行うコンピュータープログラム。ニューラルネットワーク(次章にて後述)を応用しています。
| << 1. AIとは | 目次 | 3. ニューラルネットワーク >> |