スマートフォンで買い物していると、さっき見た商品がオススメとして出てくる。YouTubeは自分の好きそうな動画を次々と提案してくる。なぜコンピュータって、自分の好みまで分かってるんだろう?その秘密が「ML」という技術にあるんだ。この記事を読めば、身の回りのテクノロジーが、どうやって自分たちを理解しているのかが分かるよ。
- MLは機械学習で、コンピュータが自分でデータから学んで、判断や予測ができるようになる技術のことだよ。
- 普通のプログラムと違って、プログラマーが細かく指示を書く必要がなく、コンピュータ自身がルールを見つけ出すのが特徴だね。
- スマホのオススメ機能やYouTubeの推薦動画など、身の回りのテクノロジーで毎日活躍しているんだ。
もうちょっと詳しく
MLの基本は「パターン認識」という考え方なんだ。つまり、大量のデータの中から「こういう時はこうなるんだな」っていう隠れたパターンを見つけ出すこと。君が野菜の値段と季節のデータをいっぱい見てると「夏は野菜が安くて、冬は高い」っていうパターンが見えるでしょ。MLも同じで、与えられたデータから似たようにパターンを見つけて、将来のことも予測できるようになるんだ。だから「経験を積むと賢くなる」なんて言い方もされるんだよ。
MLは「ルール」を人間が決めるんじゃなくて、データから自動で見つけ出すのが最大の違い。
⚠️ よくある勘違い
→ MLはAI(人工知能)の一種ではあるんだけど、AIはもっと広い概念。AIはロボットが人間みたいに考えることも含まれるけど、MLは「データから学ぶ」という特定の方法を指しているんだ。AIの方が親玉だと思ってもらえばいいよ。
→ AIの中には、MLもあれば、ルールベースの判断とか、他の方法もある。MLはAIの中でも特に「データから自動的に学ぶ」スタイルだから、そこの違いを理解しておくといいよ。
[toc]
身の回りのMLは思ったより多い
MLが活躍してる場所って、もっともっと身近なんだ。スマートフォンのアプリが「あなたの好きそう」って判断するのもML。Amazonやユニクロのサイトで「あなたへのオススメ」って出てくるのもML。その仕組みは、君がどんな商品を見たのか、何を買ったのか、どのくらい時間をかけて見たのか、そういうデータをコンピュータが集めて分析するんだ。
例えば、君が「黒いスニーカー」を3回も見てるデータがあったら、コンピュータは「この人は黒いスニーカーに興味あるんだな」って学習する。そうするとメニュー画面に「黒いスニーカーの新商品が入りました」とか出てくるわけだね。これ、すごく便利だけど、実は君のデータが使われてるんだ。
他にも、YouTubeの動画推薦も同じ理屈。君がどんな動画を見たか、どのくらい最後まで見たか、そういう情報からMLが「この人はこっちの動画も好きだろう」って予測してくる。メールのスパム判定も実はML。スパムメールと普通のメールの特徴をコンピュータに学習させておくと、新しいメールが来たとき「これはスパムぽい」って自動で判断できるんだ。
スマートフォンの顔認識機能だって、個人認証のためにMLが使われてる。君の顔をコンピュータに学習させておくと、暗い場所でも斜めから見ても「これは〇〇の顔だ」って判定できる。翻訳機能、音声認識、天気予報だって、全部MLが活躍してるんだよ。だから「MLなんて難しい技術」だと思うかもしれないけど、実は毎日、君の生活の中で動いてるわけ。
データが多いほど賢くなる理由
MLが成長するには、データが必須なんだ。これを訓練データ(つまり、コンピュータに勉強させるために使うデータ)と言うんだけど、この量が多いほど、コンピュータはいろんなパターンを学べるんだよ。
例え話でいうと、君が「リンゴって何?」って質問されて、1個のリンゴを見て答えるのと、100個のリンゴを見て答えるのでは、後者の方が詳しく説明できるでしょ。「赤い、丸い、皮が厚い、甘い」みたいにいろんな特徴を思いつくじゃん。それと同じだね。
もっと具体的に説明すると、迷惑メール判定という例を使おう。迷惑メール判定のMLに「迷惑メール1万個」と「普通のメール1万個」を学習させた場合と、「迷惑メール100万個」と「普通のメール100万個」を学習させた場合、絶対に後者の方が判定精度が高くなるんだ。なぜなら、より多くの「迷惑メールの特徴」と「普通のメールの特徴」をコンピュータが理解できるから。
だけど、ここで気をつけないといけないことがある。データの質も大事だってことだ。100万個のメールでも、その中に間違ったラベルが大量にあったら(例えば、普通のメールを「迷惑メール」だと誤ってラベル付けしたとか)、MLはその間違ったデータから学んじゃう。だから「ゴミデータを100万個与える」より「きちんと整理された良いデータを10万個与える」方が、結果的に賢いAIができるんだよ。
MLが間違えることもある理由
「MLって完璧じゃん」って思う人もいるかもしれないけど、実は誤判定することもある。例えば、顔認識が別人だと判定しちゃったり、スパム判定が大事なメールを迷惑メール扱いしちゃったり、とか。なぜそういうことが起きるのかというと、MLは「データから見つけたパターン」で判断してるだけだからだ。
分かりやすく言うと、訓練データに「Aという特徴を持つ人は〇〇である確率が高い」っていうパターンが隠れてるとしよう。その時、新しいデータで「Aという特徴を持つ人」が出てきたら、MLは「これは〇〇だ」って判定する。だけど、実際には「Aという特徴を持つけど〇〇ではない」っていう例外ケースもあるわけだ。
むしろ、MLは「100%正しい判定をする」ものじゃなくて、「データから見つけたパターンを使って、ある程度の確度で判定する」ものだと思ってもらえばいいよ。「99%の精度で判定できる」みたいな言い方をされることもあるけど、つまりそういうことなんだ。だからMLを使うときは「100%信頼できるわけじゃない」ってことを頭の片隅に入れておくのが大事だね。
ちなみに、間違えを減らすために、いろんな工夫をしてるんだ。訓練データをもっと増やすとか、データの質を上げるとか、異なるMLのやり方を組み合わせてみるとか。でも最終的には「完璧なML」は存在しないってことを認識してるんだ。
MLの学習方法はいろいろある
MLにも種類がいろいろあるんだ。同じ「データから学ぶ」でも、その方法は複数あるんだよ。大きく分けると3つの方法がある。
1つ目が教師あり学習(つまり、「正解」を教えながら学習させる方法)。例えば、メール判定だったら「このメールはスパム、このメールは普通」って正解を教えながら学習させるんだ。君が野球を教える時に「ストレートはこう、カーブはこう」って見本を見せながら教えるのと同じだね。これが一番シンプルで、実務でもよく使われる。
2つ目が教師なし学習(つまり、「正解」を教えずに、データの中からパターンを見つけ出す方法)。これは「このデータたちは何かグループに分かれてそうだな」っていうパターンを勝手に見つけるんだ。例えば、客のデータを見て「Aグループはこういう買い物をしてる」「Bグループはこういう買い物をしてる」みたいに、人間が教えなくても自動分類するわけだ。正解を教えてないのに、自分でグループ分けするから「教師なし」って言うんだね。
3つ目が強化学習(つまり、「ご褒美」と「罰」を使いながら学習させる方法)。ゲームのAIとかロボットの動きなんかで使われる。例えば「このアクションをしたら得点が増えた」「このアクションをしたら得点が減った」みたいにやってたら、AIが「得点が増えるアクションをしよう」って学習するわけだ。子どもを褒めたり叱ったりして育てるのと似てるね。
どの方法を使うかは、解きたい問題によって変わる。スパム判定みたいに「これはスパム、これは違う」って既に正解がわかってる場合は教師あり学習。顧客の特徴を無理やり分類したいって場合は教師なし学習。ロボットにゲームをうまくプレイさせたい場合は強化学習。ちょうど野球で「バッティング練習が必要な時」「走塁練習が必要な時」「試合形式で実践練習が必要な時」って場面に応じて使い分けるみたいなもんだね。
MLのこれからと注意点
MLの技術はどんどん進化してて、これからもっともっと活躍する場面が増えると思う。医療の分野でも、MLを使ってレントゲン写真から病気を見つけ出したり、薬の開発を加速させたり、そういう使い方が始まってるんだ。自動運転だって、MLが核になってる技術だしね。
ただし、注意点もあるんだ。1つはプライバシーの問題。MLが君のデータを使って学習するわけだから、「君の情報がどう使われてるのか」ってことを意識しておく必要があるんだ。君の買い物履歴、動画の再生履歴、位置情報、全部がデータとして使われてるんだよ。だから「このアプリがデータを集めてていいのか」「安全に保管されてるのか」って考えることが大事だね。
もう1つはバイアスの問題。つまり「偏り」ってことだ。例えば、顔認識のMLが「男性の顔は認識しやすいけど、女性の顔は認識しにくい」とか「特定の人種の顔を間違えやすい」とか、そういう不公平が出ちゃうことがあるんだ。これは訓練データに偏りがあったり、データの量が不足してたりするせいなんだけど、MLを使う人たちが気をつけないと、知らないうちに差別的な判定をしちゃうんだよ。
だからMLは「便利な技術」なんだけど、「使う側が責任を持つ必要がある技術」でもあるんだ。君も大人になってもし関わる機会があったら、こういう問題のことを頭の片隅に入れておいてね。
