1-2 機械学習の手法

1.人工知能(AI)とは

解説

今日の授業では、「機械学習の種類」について学びます。機械学習とは、データからパターンを学習し、予測や判断を行う技術です。その中でも教師あり学習、教師なし学習、半教師あり学習、強化学習、さらに生成AIで使用されている自己教師あり学習の手法について、学びましょう。

機械学習とは?

さて、今日は機械学習について学ぼう。なおや君は、機械学習ってどんなものか知ってる?

前回勉強したので覚えています。AI(人工知能)には「ルールベース」と「機械学習」があるという話ですよね。でも、どうやって学んでるのかはよくわからないなぁ。

よく覚えていたね。機械学習は「データからパターンを学んで予測や判断を行う技術」だ。たとえば、スマホの顔認証の仕組みでは、顔の特徴(目や鼻、口の位置など)を大量のデータから学んでいるんだ。

はい、顔の特徴を学んで本人かどうかを判断するんですね。

その通り。さらに、YouTubeのおすすめ機能や迷惑メールのフィルタリングも、似た考え方で動いている。ユーザーがよく見る動画や、迷惑メールの特徴を学習して、適切な予測や判断をしているんだ。

えっ、そんなところにも?じゃあ、いつの間にか、利用者の好みをAIが学習しているんですね!

機械学習には大きく分けて「教師あり学習」「教師なし学習」の2つの手法がある。まずは、この2つの特徴を順に説明するね。

教師あり学習(分類)

「教師あり」ってことは、先生みたいに何かを教えてもらう感じ?

その通り!教師あり学習では、入力データとそれに対応する「正解データ(教師データ)」をセットにして学習させるんだ。たとえば、猫や犬の画像に「ネコ」「イヌ」とラベルを付けるとしよう。

ラベルを付けるってどういうことですか?

「ラベルを付ける」というのは、データに「これはネコ」「これはイヌ」という“分類”の目印をつけることなんだ。たとえば、画像を見て「ネコ」と判断したら、その画像には「ネコ」というラベルをつける。

なるほど、そのラベルが正解データになるんですね。

その通り。その学習済みの情報をもとに、新しい画像を見たときに「これはネコだ!」と予測できるようになるんだ。

一度学習させた写真なら、ネコかイヌかわかると思うけど、なんで違う写真でもわかるようになるの?

いい質問だね!それは、AIが「特徴量」を学習しているからなんだ。ネコなら耳の形やヒゲ、イヌなら鼻や口周りの形状など、画像に共通する特徴を捉えているんだよ。

考えてみれば、僕らもイヌやネコの違いを特徴で記憶しているね。でも、どうやってここが耳とか、鼻とかわかるの?

 

いいところに気づいたね。実は、AIは「ここが耳だよ」「ここが鼻だよ」っていうふうに、人間が名前を付けたパーツそのものを直接理解しているわけじゃないんだ。

え?耳かどうかわかないけれど、学べるって不思議だね。

機械学習では、画像を細かく区切って「色の変化」や「線の方向」「形のパターン」などの特徴をたくさん見つけるんだ。

画像から特徴?

そう。これらの特徴を組み合わせていくうちに、結果的に「これは耳の特徴っぽいな」「これは鼻の形状に近いぞ」って判断しているんだよ。

へー、僕らも生まれたときには同じようなことをやっているのかもしれないね。

そうなんだ。これはニューラルネットワークという人間の脳に似た仕組みで実現しているんだ。

ニューラルネットワーク?たしか前回名前が出てきたような・・。

ニューラルネットワークは、最初は「線」や「色の変化」などシンプルな要素を見分けるように学習して、その次の段階でそれらを組み合わせて、もっと複雑なパターンを認識する、というように、いくつものステップを重ねていくんだよ。

この重ね合わせが多いのがディープラーニングでしたね。でも、どうしてそんなことができるのかさっぱりわからない。

そうだね。ニューラルネットワークの詳しい仕組みはちょっと複雑なので、ここでは「段階的に特徴を学習している」というイメージだけ持っておいてくれればOK。また別の回で、もう少し詳しく解説するね。

教師あり学習(回帰)

教師あり学習には、今まで説明した「分類」のほかに、「回帰」という使い方もあるんだ。

「回帰」は、情報Ⅰで回帰分析を習った記憶があります。あのときは、グラフにデータ点をプロットして、最適な直線を引くことで予測するっていう内容でしたよね。

よく覚えていたね。教師あり学習の回帰でも、入力データとその数値の正解データを使って、モデルが「どの入力に対してどの数値が出るか」を学習するんだ。

なるほど、出力結果が教師データなんですね。

その通り。学んだモデルは、未知の入力に対しても、どれくらいの数値が予測されるかを出力するんだ。これが、まさに回帰分析の応用だよ。

教師なし学習(クラスタリング)

次に「教師なし学習」。これは正解データが与えられずAIが自分でデータのパターンを見つける手法なんだ。

えっ、答えがないのにどうやって、パターンを見つけられるの?

例えば、画像の中から「色」や「形」といった特徴を自動的に抽出して、似たもの同士をグループ分けするんだよ。

それって適当にグループ分けしちゃうだけじゃないの?

そう思うかもしれないけど、実際は「クラスタリング」という手法で、データの特徴を詳細に分析してグループ化しているんだ。

なるほど、友達を趣味や性格ごとにグループ分けするみたいな感じですね。でも、グループ分けってどんなところで使われているんですか?

例えば、このグループ分けはネットショッピングでのレコメンド機能に活用されているんだ。ユーザーの購買履歴や閲覧履歴から、似た嗜好を持つグループを作り出すことで、好みに合った商品を提案するんだよ。

なるほど、いつの間にか似た者同士でグルーピングされているんですね

他にも、教師なし学習は異常検知にも使われる。例えば、通常のパターンから外れるデータを自動で見つけ出すことで、故障の予兆や不正行為を検知することができるんだ。

いつもと違う場合は、怪しいと見破るわけですね。

そうだよ。正解がなくても、データの中にある「隠れたルール」や「共通点」を見つけ出すことで、新しい知見を得ることができるんだ。これが教師なし学習の大きな魅力なんだよ。

なるほど、グループ分けって結構色んな用途に使われているんですね。とても興味深いです!

教師なし学習(次元削減)

そうそう、教師なし学習には他にも「次元削減」っていう応用があるんだ。これも、正解データがないままに、データの構造をシンプルにまとめるための手法だよ。

次元削減…って、どういうことなんですか?

データが持っている特徴の数(次元)が多すぎると、扱いづらくなるよね。そこで、なるべく情報を失わないように次元を減らして、データを整理するのが「次元削減」なんだ。

なるほど。次元が多いと、コンピュータの処理も大変そうですもんね。どんな例があるんですか?

たとえば、生徒の成績データを考えてみる。国語、数学、英語、理科、社会の5教科の成績があったとするよ。この成績を使った分析するとしよう。

確かに5つも次元があると、散布図もかけないですね。

そうなんだ。そこで、次元削減を使うと、たくさんある教科のデータから重要な特徴だけを抽出して、大まかなグループにまとめることができるんだ。

なるほど!つまり、5つの教科を2つのグループに整理して、データをシンプルにするということですね。

その通り。実際には、「主成分分析(PCA)」という手法がよく使われるんだけど、これは各教科の成績のバラつきや相関関係を分析して、最も情報量が多い軸(次元)を見つけ出すんだ。

なるほど。じゃあ、5教科をどうやってグループ分けするんですか?

たとえば、数学と理科が高得点だと、理系の学力が高いと判断できるし、全体が平均的な場合は総合学力が高いといった具合にね。

なるほどね。

こうして次元を削減することで、教師や学校は生徒全体の傾向を把握しやすくなり、指導方針やカリキュラムの改善に役立てることができるんだ。

それはわかるけど、そんな感じで生徒を型にはめてもらいたくはないな。

そうだね。AIによる生徒の評価や指導のデメリットとしては、一人ひとりの数値に表れていない個性が見えにくくなるリスクがあるんだ。

その通り!ちゃんと生徒一人ひとりを見てほしいな。

そうだね。最新のAIでは学習者の回答データやテスト結果をリアルタイムに分析し、「どの分野が得意か・苦手か」「理解が十分かどうか」を判断してくれたりするよ。

なるほどね。AIの語学アプリをつかっていますが、しっかりと弱点を教えてくれますよね。

そうだね。次元削減で全体像をつかんで、あとは個別にパーソナライズするということもできるんだ。先生の方でもうまく使い分けないといけないね。

賛成!

半教師あり学習

これまで教師あり学習教師なし学習について話してきたけど、今度はその2つを組み合わせた「半教師あり学習」を紹介するよ。

へぇ、2つを組み合わせるって、どんな感じになるんですか?

まず、たくさんのラベルなしデータに対して「教師なし学習」のクラスタリングの技術を使って、似た特徴を持つデータ同士をサブグループとしてまとめるんだ。

「イヌっぽいデータ」「ネコっぽいデータ」「トリっぽいデータ」みたいに、自動でグループ分けするんですね。

その次に、少量のラベル付きデータを活用するんだ。たとえば、「このグループはイヌの特徴を持ってる」「このグループはネコに近い」といった具合に、各サブグループに対して疑似ラベルを付与していくんだ。

なるほど。クラスタリングの結果をもとに、ラベル付きデータの情報をサブグループ全体に広げるということですね。でも少量のラベル付きデータだけで大丈夫なんですか?

モデルが出す各データの予測が、どのクラスに属するか明確になるように、予測の「不確実性」を下げる仕組みを取り入れているんだ。

予測の不確実性を下げるって、どういう意味ですか?

各グループの特徴量をグラフにプロットした場合、各データの特徴量間の違いがはっきりしていれば、同じクラスのデータはグループ内で近く、異なるクラスのデータは十分に離れて配置されるんだ。

なるほど、グループ内では特徴が似ていて、異なるグループでは特徴がしっかり違う状態だと、モデルは自信を持って予測できるんですね。

その通り。こうして、疑似ラベルの付与と学習を繰り返す中で、モデルは各サブグループ間の違いをより明確に把握し、データの「不確実性」、つまり「エントロピー」が低くなるんだ。

つまり、特徴量間の違いがはっきりしていると、どのデータがどのグループに属するかより確実になるということですね。

そうだね。この一連の流れが、半教師あり学習の大きな特徴なんだ。

なるほど。少ししか正解データがなくても、たくさんのデータを無駄にしないで済むから、学習の幅が広がるんですね。

その通り!実際の現場では、ラベル付けをする作業って大変なんだよ。だから、ラベル付けされていないデータは山ほどあるけど、ラベル付きデータは限られていることが多い。

具体的にはどんなデータですか?

たとえば、医療画像の診断でも活用されているんだ。専門家がラベル付けするのはコストが高いし、時間もかかるよね。

お医者さんに全部ラベル付けをお願いしていたら、患者さん見ている時間なくなっちゃう。

他にも、テキストを分類したりや、不正検知など、さまざまな分野で応用されているよ。

半教師あり学習がうまくいくのなら、コスパ高そうですね。

うん、確かに半教師あり学習は、データラベリングのコストを大幅に下げられるという点で魅力的なんだ。ラベルなしデータの質が悪い場合、AIが誤ったパターンを学習してしまう可能性があるんだ。

 

なるほど、バランスが大切そうですね。

その通り。半教師あり学習も含め、教師あり学習、教師なし学習はそれぞれ特徴があるんだ。使うシーンや目的、コスト、データの質・量などに合わせて、最適な技術を選ぶことが大切なんだよ。

強化学習

次は強化学習

「強化」って、スポ根ですか?

いい例えだね。強化学習は、スポーツみたいに何度も繰り返しトレーニングすることで、どんどん強くなっていくんだよ。

なるほど、つまり最初は下手でも、繰り返しやっているうちに上手になっていくってことですね。

その通り。強化学習とは、ある環境下で、エージェントと呼ばれる学習主体が「行動」を選択し、その行動の良し悪しに応じて変化する「状態」や「報酬」を受け取りながら学習する手法なんだ。

なんだか、難しそうな単語がいっぱい出てきました・・

大丈夫。ちょっと言葉は難しいけれども、実際の人間の学習をイメージすれば大丈夫だよ。例えば囲碁の勝負について説明しよう。

囲碁とか将棋のAIには絶対に勝てないですよね。そこに強化学習が使われてたんですか。

そう。2016年に囲碁の世界チャンピオンに勝利したグーグルの「アルファ碁」が、強化学習の成果の一つとしてよく知られているんだ。

へぇ、つい10年前まではまだ、人間の方が強かったんですね。

そうなんだよ。アルファ碁より前は、過去の棋譜やプロの知識をもとに、手を選ぶルールベースが中心で、この時はAIは絶対に人間に勝てないといわれていたんだ。

へぇ、つい10年前まではまだ、人間の方が強かったんですね。アルファ碁は、どうやって強化学習を取り込んでいるんですか?

囲碁の場合は、エージェントは囲碁のプレイヤーで、環境は囲碁盤や対戦相手になるよ。

じゃあ、盤上の石の配置や現在の局面が「状態」ですね。

いいね。そして、エージェントは自分のターンに、どこに石を置くかという「行動」を選ぶんだ。行動を起こすと、盤上の局面が変わるんだ。

あれ、でも報酬が「勝利」だとすると、最後までいかないと報酬が得られないですね。これでどうやって行動を決められるんですか?

いい質問だね。最終的な「勝利」だけを報酬にしてしまうと、途中の一手一手がどれだけ良かったのか判断しにくくなる。そこで、強化学習では「勝利までの過程」も評価できるようにする仕組みがあるんだ。

えっ、どういうことですか?途中の手にも報酬があるんですか?

その通り!これを「中間報酬」とも呼ぶんだけど、エージェントは各局面での評価をもとに、長期的な報酬の合計を最大化する行動を選ぶように学習するんだ。

何度もやらないと、どの手が長期的な報酬につながるかわからないですよね。アルファ碁は実際にどれくらい学習したんですか?

グーグルによると、アルファ碁はWebサイト上の対局3000万手を学習し、AI同士で数千万局の対局を行ったとされているよ。

ひゃー。人間じゃ無理だ。そりゃあ、強いわけですね。

自己教師あり学習

ところで、ChatGPTなどの生成AIは、教師ありですか?教師なしですか?

いい質問だね。生成AIは、「自己教師あり学習」という手法を主に使って学習しているんだ。

おっと!新しい学習方法が出てきましたね。

自己教師あり学習は、インターネット上の大量のテキストデータを使って、次に来る単語を予測するタスクを通じて、文章のパターンや文脈を学んでいるんだよ。

えっ、でも、インターネット上のテキストには「正解」が明確に示されているわけじゃないですよね?

その通り。だから、生成AIでは、文章の一部を隠して「何が来るか」を予測するようにしているんだ。例えば「日本の首都は東京です」という文章の「東京」だけを隠して問題を作ってみるみたいな感じだ。

穴埋め問題ですね。

まさにその通りだね。文章の中で、前後の単語が自然に続くように予測して、その結果を正解と比較することができるんだ。

なるほど。この方法ならいくらでも正解付きの問題が作れるわけですね。でもどうやって日本語の文章を理解しているの?

いい質問だね。言語の理解は「トランスファーモデル」という仕組みによって行われているんだ。

トランスファーモデル?初めて聞きました。

これは文章中の単語同士の関係を捉えるのが得意なモデルで、前後の文脈を同時に考えながら意味を理解するんだ。

なるほど。単語の順番や関連をまとめて把握するわけですね。

ちなみに、ChatGPTって何の略か知っているかな?

えっ?チャットはわかるけれど、GPTは何だろう?

GPTは”Generative Pre-trained Transformer“の略称なんだ。

なるほど、日本語に訳すと、生成事前学習トランスフォーマーって感じですね。

そういうこと。ChatGPTもトランスファーモデルによって、文章の文脈を深く理解できるようになったんだ。

言葉を完璧に理解できるようになったから、学習するデータが飛躍的に増えたんですね。

その通り。さらに、生成AIは自己教師あり学習で文章の基礎を学習した後、「強化学習」の手法も用いて、実際の対話での応答品質を向上させているんだ。

ここでも「強化学習」が出て切るんですね、

そう。実際の対話での応答品質を向上させているんだ。例えば、人間のフィードバックをもとに、どの回答がより適切かを評価し、その結果を報酬としてモデルを改善していく仕組みなんだ。

エージェントが生成AIで、環境が人間からのフィードバックということですね。

その通り。生成AIはこの2段階の学習プロセスを経て、インターネット上の膨大なデータから言葉の使い方や文脈を学び、人間に近い自然な応答ができるようになっているんだ。

よくわかりました。こうして順番に学習していくと、生成AIの仕組みもわかってきた気がします。

まとめ

問題

「クイズをスタート」のボタンをクリックすると、5問出題します。さあチャレンジ!

機械学習の種類の中で、「正解データ(ラベル)」が与えられない状態でデータを学習し、共通するパターンやグループを見つける手法を何というか?
教師あり学習のうち、「連続する数値を予測するタスク」を何と呼ぶか?
ニューラルネットワークが画像を認識する際、どのようにして「耳」「鼻」などの特徴を識別するのか?
強化学習において、エージェントが最適な行動を学習するために、与えられるフィードバックのことを何というか?
半教師あり学習が有効に活用できる場面として最も適切なものはどれか?
機械学習の種類
{{maxScore}} 問中 {{userScore}} 問 正解!
{{title}}
{{image}}
{{content}}

問題1

機械学習の種類の中で、「正解データ(ラベル)」が与えられない状態でデータを学習し、共通するパターンやグループを見つける手法を何というか?

  1. 教師あり学習
  2. 教師なし学習
  3. 強化学習
  4. 半教師あり学習

正解: 2. 教師なし学習

解説

  • 選択肢1(教師あり学習):正解データが与えられた状態で学習する方法。例えば、犬や猫の画像にラベルを付けて分類するタスクがある。
  • 選択肢2(教師なし学習):正解データなしで、データ内の共通点を見つける学習方法。クラスタリング(グループ分け)や次元削減などが含まれる。
  • 選択肢3(強化学習):報酬を得ながら、試行錯誤を通じて最適な行動を学ぶ手法。囲碁AI「AlphaGo」などで使われる。
  • 選択肢4(半教師あり学習):少量のラベル付きデータと大量のラベルなしデータを組み合わせて学習する手法。医療画像診断などで利用される。


問題2

教師あり学習のうち、「連続する数値を予測するタスク」を何と呼ぶか?

  1. 分類
  2. クラスタリング
  3. 回帰
  4. 強化学習

正解: 3. 回帰

解説

  • 選択肢1(分類):データを特定のカテゴリに分類するタスク(例:スパムメール判定)。
  • 選択肢2(クラスタリング):教師なし学習の一種で、データの共通点をもとにグループ化する手法。
  • 選択肢3(回帰):連続値を予測する手法。例えば、家の価格予測や株価予測などに利用される。
  • 選択肢4(強化学習):試行錯誤を通じて最適な行動を学ぶ手法で、回帰とは異なる。


問題3

ニューラルネットワークは、画像を認識する際にどのようにして「耳」や「鼻」といった特徴を識別するか?

  1. 画像を細かい領域に分割し、それぞれの部分の色の変化や線の方向を分析する
  2. 人間が事前にすべての画像のパーツに名前を付け、それをデータとして学習する
  3. 画像を一度記憶し、新しい画像と直接比較することで識別する
  4. AIが「耳」や「鼻」といった概念を直接理解し、それに基づいて識別する

正解: 1. 画像を細かい領域に分割し、それぞれの部分の色の変化や線の方向を分析する

解説

  • 選択肢1(正解):ニューラルネットワークは、画像を小さな領域に分け、それぞれの部分の色の変化や線の向き、エッジの形状などの特徴を抽出し、それらを組み合わせることで「耳」や「鼻」などの大きな特徴を認識する。
  • 選択肢2(誤り):人間がすべての画像にパーツごとのラベルをつけるわけではなく、AIはデータから特徴を自動的に学習する。
  • 選択肢3(誤り):画像をそのまま記憶するのではなく、特徴を抽出し、学習したパターンと照らし合わせて認識する。
  • 選択肢4(誤り):AIは「耳」や「鼻」といった概念を人間のように理解するわけではなく、データのパターンからそれらに相当する特徴を見つけ出している。

問題4

強化学習において、エージェントが最適な行動を学習するために、与えられるフィードバックのことを何というか?

  1. ラベル
  2. 報酬
  3. クラスター
  4. 誤差関数

正解: 2. 報酬

解説

  • 選択肢1(ラベル):教師あり学習で使われる「正解データ」のこと。
  • 選択肢2(報酬):強化学習では、エージェントが行動をとると報酬を得る仕組みがあり、これを最大化するように学習する。
  • 選択肢3(クラスター):教師なし学習のクラスタリングで使われる概念で、強化学習とは関係がない。
  • 選択肢4(誤差関数):教師あり学習などで、モデルの予測がどれくらい正しいかを評価するために用いられるが、強化学習の報酬とは異なる。


問題5

半教師あり学習が有効に活用できる場面として最も適切なものはどれか?

  1. ラベル付きデータが少なく、ラベルなしデータが大量にある場合
  2. すべてのデータにラベルを付けるのが義務付けられている場合
  3. 強化学習を使って最適な行動を学習する場合
  4. ラベル付きデータが大量にあり、高精度なモデルを作りたい場合

正解: 1. ラベル付きデータが少なく、ラベルなしデータが大量にある場合

解説

  • 選択肢1(正解):半教師あり学習は、少量のラベル付きデータを活用し、大量のラベルなしデータから追加の情報を引き出して学習する手法。医療データや自動運転など、ラベル付けが困難な分野で有効に活用される。
  • 選択肢2(誤り):すべてのデータにラベルを付けることが義務付けられている場合は、教師あり学習を使用するのが一般的であり、半教師あり学習を使う必要はない。
  • 選択肢3(誤り):強化学習は、エージェントが環境と相互作用しながら最適な行動を学習する手法であり、半教師あり学習とは異なる概念である。
  • 選択肢4(誤り):ラベル付きデータが大量にある場合は、通常の教師あり学習を使う方が効率的である。

機械学習のプログラミング

機械学習の教師あり学習のプログラミング例として、「アヤメデータを用いたデータ分析」を紹介します。
アヤメデータ(iris data)は機械学習を勉強する際によく使われるデータセットです。「情報寺子屋 2 変量の相関分析」でも紹介しているので、参考にしてください。

アヤメデータには、「花びらの長さ(Petal Length)」「花びらの幅(Petal Width)」「ガクの長さ(Sepal Length)」「ガクの幅(Sepal Width)」という4つの特徴量で構成されており、これらの特徴から、3種類のアヤメの種類「setosa(セトーサ)」、「versicolor(ヴァーシカラー)」、「virginica(ヴァージニカ)」を識別することができます。

今回、アヤメデータを「サポートベクターマシン(SVM)」という機械学習のライブラリを用いて学習します。SVMは、学習データから各クラスを分ける「最適な境界線(ハイパープレーン)」を見つけることで分類を行います。

Python
#アヤメデータの分類プログラム(サポートベクターマシン(SVM))

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets, svm
from sklearn.model_selection import train_test_split
import ipywidgets as widgets
from IPython.display import display

# 1. Irisデータセットの読み込み
iris = datasets.load_iris()
X = iris.data      # 特徴量:[Sepal length, Sepal width, Petal length, Petal width]
y = iris.target    # ラベル: 0:Setosa、1:Versicolor、2:Versinica

# 2. データを訓練データ(70%)とテストデータ(30%)に分割
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

# 3. グラフ表示用に、全データから各花の種ごとにデータを抽出
st_data = X[y == 0]     # Setosa
vc_data = X[y == 1]     # Versicolor
vn_data = X[y == 2]     # Versinica

# 4. 初回の散布図(SepalとPetalのグラフを横に並べて表示)
fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# --- 左側:Sepalの散布図(x軸:Sepal length, y軸:Sepal width) ---
axes[0].scatter(st_data[:, 0], st_data[:, 1], label="Setosa")
axes[0].scatter(vc_data[:, 0], vc_data[:, 1], label="Versicolor")
axes[0].scatter(vn_data[:, 0], vn_data[:, 1], label="Versinica")
axes[0].set_xlabel("Sepal length (cm)")
axes[0].set_ylabel("Sepal width (cm)")
axes[0].set_title("Sepal Measurements")
axes[0].legend()

# --- 右側:Petalの散布図(x軸:Petal length, y軸:Petal width) ---
axes[1].scatter(st_data[:, 2], st_data[:, 3], label="Setosa")
axes[1].scatter(vc_data[:, 2], vc_data[:, 3], label="Versicolor")
axes[1].scatter(vn_data[:, 2], vn_data[:, 3], label="Versinica")
axes[1].set_xlabel("Petal length (cm)")
axes[1].set_ylabel("Petal width (cm)")
axes[1].set_title("Petal Measurements")
axes[1].legend()

plt.show()

# 5. SVMによる学習(probability=True を設定して確率推定を有効に)
clf = svm.SVC(probability=True)
clf.fit(X_train, y_train)

# ※ テストデータに対する評価は表示しません

# 6. ipywidgetsを使ってユーザー入力フォームを作成(初期値は空)
print("【Iris Flower Prediction】")
print("以下の値を入力してください:")

# Textウィジェットを利用して、初期値が空の入力欄を作成(placeholderに例示を表示)
sepal_length_widget = widgets.Text(
    value='',
    description='Sepal length:',
    placeholder='例: 5.1'
)
sepal_width_widget = widgets.Text(
    value='',
    description='Sepal width:',
    placeholder='例: 3.5'
)
petal_length_widget = widgets.Text(
    value='',
    description='Petal length:',
    placeholder='例: 1.4'
)
petal_width_widget = widgets.Text(
    value='',
    description='Petal width:',
    placeholder='例: 0.2'
)

# ウィジェットの表示
display(sepal_length_widget, sepal_width_widget, petal_length_widget, petal_width_widget)

# 予測実行用のボタンを作成して表示
button = widgets.Button(description="Predict")
display(button)

# 7. ボタンがクリックされたときの処理
def on_button_clicked(b):
    try:
        # 入力値を取得し、floatに変換
        sepal_length = float(sepal_length_widget.value)
        sepal_width  = float(sepal_width_widget.value)
        petal_length = float(petal_length_widget.value)
        petal_width  = float(petal_width_widget.value)
    except ValueError:
        print("数値を正しく入力してください。")
        return

    # 入力された特徴量をまとめる
    user_features = [[sepal_length, sepal_width, petal_length, petal_width]]
    
    # 学習済みモデルで予測ラベルを取得
    prediction = clf.predict(user_features)[0]
    
    # 各クラスの確率を取得(各確率は0〜1の値)
    probabilities = clf.predict_proba(user_features)[0]
    
    # 数値ラベルを種名に変換する辞書(参照コードに合わせ、Versinicaと表記)
    species = {0: "Setosa", 1: "Versicolor", 2: "Versinica"}
    
    # 予測結果と各クラスの確率をパーセンテージ表示で出力
    print("\n【予測結果】")
    print(f"入力された特徴量は、{prediction}: {species[prediction]} に該当する可能性が高いです。")
    print("各クラスの確率:")
    for label, prob in enumerate(probabilities):
        print(f"{label} ({species[label]}): {prob*100:.2f}%")
    
    # 8. ユーザー入力値をグラフにプロットして再表示
    fig, axes = plt.subplots(1, 2, figsize=(14, 6))
    
    # --- 左側:Sepalの散布図にユーザー入力値を追加 ---
    axes[0].scatter(st_data[:, 0], st_data[:, 1], label="Setosa")
    axes[0].scatter(vc_data[:, 0], vc_data[:, 1], label="Versicolor")
    axes[0].scatter(vn_data[:, 0], vn_data[:, 1], label="Versinica")
    axes[0].scatter(sepal_length, sepal_width, color='red', marker='*', s=200, label="Your Input")
    axes[0].set_xlabel("Sepal length (cm)")
    axes[0].set_ylabel("Sepal width (cm)")
    axes[0].set_title("Sepal Measurements with User Input")
    axes[0].legend()
    
    # --- 右側:Petalの散布図にユーザー入力値を追加 ---
    axes[1].scatter(st_data[:, 2], st_data[:, 3], label="Setosa")
    axes[1].scatter(vc_data[:, 2], vc_data[:, 3], label="Versicolor")
    axes[1].scatter(vn_data[:, 2], vn_data[:, 3], label="Versinica")
    axes[1].scatter(petal_length, petal_width, color='red', marker='*', s=200, label="Your Input")
    axes[1].set_xlabel("Petal length (cm)")
    axes[1].set_ylabel("Petal width (cm)")
    axes[1].set_title("Petal Measurements with User Input")
    axes[1].legend()
    
    plt.show()

# ボタンがクリックされたら on_button_clicked 関数を呼び出す
button.on_click(on_button_clicked)
Python

上記のプログラムをgoogle colabで実行すると、まず、「花びらの長さ(Petal Length)」と「花びらの幅(Petal Width)」の散布図、「ガクの長さ(Sepal Length)」「ガクの幅(Sepal Width)」の散布図が表示されます。

その後、分類したい対象の花の、「花びらの長さ(Petal Length)」、「花びらの幅(Petal Width)」、「ガクの長さ(Sepal Length)」「ガクの幅(Sepal Width)」の値の入力が求められるので、入力します。

すると、3種類のアヤメの種類「setosa(セトーサ)」、「versicolor(ヴァーシカラー)」、「virginica(ヴァージニカ)」それぞれである確率を%で表示します。

ここをクリックすると、google colab上で実行できます ⇒ 実行結果

最新トピックス(Deep Research登場)

今回はOpenAIの最新サービスである「Deep Research」を紹介します。「Deep Research」は従来の生成AIのように即座に回答するのではなく、複雑な質問に対して深く思考し、詳細なレポートを生成することに特化した、エージェント型のAIです。

早速、今回の講座のテーマである「機械学習」と「教育分野での応用」についてレポートを作ってもらいましたので、以下に転記します(青いバーをクリックください)。8000文字の参照先付きの立派なレポートなので、読み応え十分ですよ。Deep Research、使わない手はないですね。

機械学習の種類と教育分野での応用

機械学習(Machine Learning)は、コンピュータがデータから自ら学習してパターンや知識を獲得する技術です。

従来は人間がプログラムで詳細な手順を指示していましたが、機械学習では大量のデータをコンピュータに与えて規則性を発見させたり将来の予測をさせたりします。

例えば、写真を見せて「これは猫です」と教え込むと、新しい写真に猫が写っているかをコンピュータが判断できるようになります。

機械学習にはいくつかのアプローチがあり、代表的なものに教師あり学習教師なし学習強化学習があります (Three Types of Machine Learning You Should Know | Pecan AI)。

以下ではそれぞれの特徴を初心者向けにわかりやすく説明します。

機械学習の主な種類

教師あり学習(Supervised Learning)

教師あり学習は、正解(ラベル)が付いたデータを使ってモデル(プログラム)を訓練する方法です。

いわば**「答え合わせ付きの学習」で、先生役のデータセットから「これが正解だよ」と教えてもらいながら学習します。

例えば、犬と猫の画像それぞれに「犬」「猫」というラベル(正解)を付けて大量に見せると、モデルは特徴を学習し、新しい画像に対して犬か猫かを当てられるようになります。

つまり過去のデータと正解を元にして未来の結果を予測できるようになるわけです (Three Types of Machine Learning You Should Know | Pecan AI)。

教師あり学習には、特定のカテゴリーに分類する分類問題や、数値を予測する回帰問題**などが含まれます。

つまり、教師あり学習は「問題集に答えが付いており、それを丸暗記するのではなくパターンを学ぶことで、初めて見る問題にも答えられるようになる方法」です。

教師なし学習(Unsupervised Learning)

教師なし学習は、正解ラベルのないデータだけを使ってデータ内のパターンや構造を見つけ出す学習方法です。

例えると「答えのないパズルを自力で解く」ようなもので、大量の情報をグループ分けしたり特徴を抽出したりします。

例えば、たくさんの動物の写真を与えると、事前に「犬」「猫」と教えなくても、見た目の似たもの同士でグループ分け(クラスタリング)することが可能です。

「この集まりは毛がふさふさで四足歩行の動物が多いからおそらく哺乳類のグループだ」など、人間が見てもなるほどと思うような分類を自動で見つけてくれます。

また教師なし学習は、データから隠れた構造や異常検知(他と違う珍しいパターンの発見)にも使われます。

つまり、教師なし学習は「大量のデータから自分でルールやグループを見つけ出す学習法」です (Three Types of Machine Learning You Should Know | Pecan AI)。

強化学習(Reinforcement Learning)

強化学習は、試行錯誤を通じて最適な行動を学ぶ学習方法です (Three Types of Machine Learning You Should Know | Pecan AI)。

ここでは正解データは与えられませんが、モデルがある行動をとるたびに報酬(ご褒美)や罰則が与えられます。

その報酬を最大化するように行動を徐々に調整していくのが強化学習です。例えば、ゲームのAIが強化学習の典型例です。

初めはランダムに動くAIキャラクターも、良い結果(報酬)を得た行動は今後もっと行うようにし、悪い結果(罰則)につながった行動は避けるようにすることで、ゲームの攻略法を自力で身につけていきます。

イメージとしては「迷路を手探りで進み、正しい道に進めたら褒められる」のを繰り返しながらゴールへの最善経路を学ぶようなものです。

強化学習はロボットの制御や自動運転、囲碁やチェスの名人レベルのAIなどに利用されており、試行錯誤により徐々に賢くなる点が特徴です (Three Types of Machine Learning You Should Know | Pecan AI)。

▶︎補足: 上記以外にも、少量のラベル付きデータと大量のラベル無しデータを組み合わせる半教師あり学習や、近年注目される多層ニューラルネットワークによるディープラーニング(深層学習)などの手法があります。

ディープラーニングは画像認識や音声認識で飛躍的な精度向上をもたらし、現在の機械学習ブームの原動力となっています。

ただし、機械学習の学習形態は大きく分ければ前述の教師あり・教師なし・強化学習の3つに分類できます。

その中で適切な手法を選ぶことで、解きたい課題に合わせたモデルを作ることができます (Difference Between Supervised, Unsupervised, & Reinforcement Learning | NVIDIA Blog)。

教育分野における機械学習の応用

機械学習は教育の現場にも広く取り入れられ、学習体験の最適化指導の効率化に大きな役割を果たしています。

教育分野で機械学習を活用することで、生徒一人ひとりに合わせた個別学習が可能になり、また教師の業務負担軽減学習効果の向上が期待できます (18 Machine Learning in Education Examples | Built In)。

ここでは、特に教育分野での最新トレンドや具体的な活用事例に焦点を当てて紹介します。

個別最適化された学習(パーソナライズド学習)

機械学習の最も魅力的な応用の一つが、生徒それぞれの習熟度や理解度に合わせて学習内容やペースを調整する個別学習のパーソナライズです。

従来は教科書やカリキュラムが画一的で、得意な子も苦手な子も同じペースで進まざるを得ない場合がありました。機械学習を搭載したアダプティブ・ラーニングシステムでは、学習者の回答データやテスト結果をリアルタイムに分析し、「どの分野が得意か・苦手か」「理解が十分かどうか」を判断してくれます。

そして、苦手な分野に応じて最適な次の教材や問題を推薦したり、理解が不十分ならペースを落として復習問題を多めに出したりします。

例えば日本の教育現場でも、AI教材「atama+(アタマプラス)」が塾や学校で導入され始めています。

このシステムでは、生徒が自分のペースで学習を進め、理解度に応じてAIが講義動画や演習問題をレコメンドします (AI教材「atama+」の入学前教育での活用、立命館大学などの10大学30学部以上に拡大 | atama plus株式会社のプレスリリース)。

教師や指導者は各生徒の進捗や得意・苦手をデータで把握できるため、一人ひとりに適切なフォローが可能です (AI教材「atama+」の入学前教育での活用、立命館大学などの10大学30学部以上に拡大 | atama plus株式会社のプレスリリース)。

結果として、生徒は自分に合った学習経路で効率良く基礎学力を身につけることができます。

また、語学学習アプリのDuolingo(デュオリンゴ)は機械学習によるパーソナライズ学習の成功例として有名です。

ゲーム感覚のインターフェースでユーザーに継続して練習させつつ、裏では何億という学習データを分析してコース内容を改良しています。

例えば、間違えやすい問題パターンを検出して出題頻度を調整したり、各言語特有のニュアンスを考慮して練習問題を最適化したりしています。

その結果、ユーザーごとに適切なタイミングで適切な難易度・内容の問題が提示され、楽しみながら着実に語学力を伸ばせるよう工夫されています (18 Machine Learning in Education Examples | Built In)。

このように、機械学習のおかげで「一斉授業」から「一人ひとりに合った学習」へと教育のスタイルが大きくシフトしつつあります。

AIチューター・仮想学習アシスタント

人間の先生が常にマンツーマンで指導するのは難しいですが、AIチューター(仮想学習アシスタント)を活用すれば24時間いつでも個別指導を受けることが可能になります。

近年の対話型AI(チャットボット)の進歩により、まるで人間の家庭教師と会話しているかのように質問したりヒントをもらったりできるシステムが登場しています。

例えば、米国のカーンアカデミーは2023年にKhanmigo(カーンミゴ)と呼ばれるAIチューターを試験導入しました。

Khanmigoは最新の大規模言語モデル(GPT-4)を活用した対話型のチューターで、生徒が問題に取り組む際に対話形式でヒントを出したり、考え方を質問し返したりします。

その様子はまるで「仮想のソクラテス」が対話を通じて学生を導いているようだと表現されています (Harnessing GPT-4 so that all students benefit. A nonprofit approach for equal access – Khan Academy Blog)。

実際、Khanmigoは答えをそのまま教えるのではなく、生徒に考えさせる問いかけを行い(例:「この問題を解決するにはまず何を求めれば良いかな?」)、試行錯誤を支援します。これにより、生徒は自ら考える力を養いながらも、行き詰まったときには適切な助け舟を出してもらえるため安心して学習を進められます。

他にも、チャットボットによる質問応答システムは大学やオンライン講座でも活用が広がっています。

例えば、ある大学ではAIアシスタントが学生からのよくある質問(課題の締め切りや授業内容の確認など)に即座に回答し、教員の負担を減らしています。またEdTech企業の中には、学生の勉強の悩みに応じてメンタル面のサポートや学習アドバイスをチャットで提供するサービスもあります (18 Machine Learning in Education Examples | Built In)。

これらAIチューターやアシスタントは、特に自宅学習やオンライン学習で威力を発揮しており、生徒はわからないことをすぐ質問できる相手がいることで孤独になりがちなリモート学習を乗り越えられます。

最新のトレンドとして、大規模言語モデル(例: ChatGPT)の公開により、この種のAIチューターは今後さらに身近になり、安価に高度な個別指導が受けられるようになると期待されています。

採点の自動化とフィードバック

機械学習はテストや宿題の採点作業の自動化にも利用されています。

大量の答案を人手で採点するのは教師にとって大きな負担ですが、AIがその一部を肩代わりできれば教師はより創造的な指導に時間を割けます。

例えば記述式の作文やエッセイでも、自然言語処理(NLP)技術を使った機械学習モデルが文章の構成や内容を解析し、一定の評価を与えることが可能です (The Evolution of Education: How AI is Reshaping Grading | The Princeton Review)。

AIは文章中のキーワードや論理展開を人間の模範解答と照らし合わせて採点したり、文法や語彙のミスを指摘したりします。

これにより、生徒は答案を提出してから短時間でフィードバックを受け取ることができ、学習の振り返りがスムーズになります。

実際、英語圏では入試のエッセイ採点にAIを活用する試みも始まっており、公平で一貫性のある評価につながるという報告があります(人間だと主観でばらつきが出る部分も、AIなら常に一定の基準で採点できる利点) (The Evolution of Education: How AI is Reshaping Grading | The Princeton Review)。

また客観式(マーク式)のテスト手書き答案の採点にも画像認識AIが使われています。答案用紙をスキャンして機械学習モデルが正解パターンと照合し、〇×を判定したり点数を集計したりします。

さらに進んだ例では、日本の大学入試などで課題となっている英語のスピーキングテスト面接試験において、受験者の音声を録音してAIが発音や表現力を評価するシステムも登場しています。

大手英語能力試験では、AIによる音声解析で受験者の発音の癖や流暢さを点数化し、人間の面接官の評価と組み合わせて公正な判定を下す取り組みも始まっています (教育業界でのAI導入事例・おすすめサービス14選!メリットや注意すべき3つのデメリットも解説〖2025年最新版〗 – AI Market)。

このように、機械学習を使った自動採点システムはスピードと公平性の面でメリットが大きく、先生方の長時間労働是正にも一役買うと期待されています。

学習データの分析(ラーニングアナリティクス)と指導改善

教育現場では日々蓄積される学習データ(テストの点数、課題の提出状況、電子教材の利用ログなど)が宝の山です。

機械学習はこれらビッグデータを分析し、今まで見えなかった傾向や問題点を浮かび上がらせることができます。

例えば、あるオンライン学習プラットフォームでは膨大な受講データを機械学習で解析し、どの教材でつまずく学生が多いかを特定しました。

その結果を元に教材内容を改善したところ、全体の理解度が向上したという報告があります。また学校現場でも、成績や出欠などのデータから学習リスクの早期発見を行う試みがあります。

機械学習モデルにより「このままだと単位修得が危うい学生」や「退学してしまう可能性が高い学生」を事前に予測し、早めにカウンセリングや追加指導を実施するといった活用です。これを一般にラーニング・アナリティクスと呼び、生徒一人ひとりの状況を可視化して適切な支援策を講じるのに役立てられています。

さらに、機械学習はカリキュラム設計の最適化にも応用できます。

教育コンテンツ提供企業では、どの順番で単元を学ぶと理解が深まりやすいかをデータから分析し、レコメンドエンジンで各学生にカスタマイズされたカリキュラムを提示することもあります (教育業界でのAI導入事例・おすすめサービス14選!メリットや注意すべき3つのデメリットも解説〖2025年最新版〗 – AI Market)。

例えばZ会などの教材開発では、蓄積した受講者のデータをAIが分析し、「このレッスンの前にこちらの基礎事項を学んでおくと効果的」といった提案を行っています (教育業界でのAI導入事例・おすすめサービス14選!メリットや注意すべき3つのデメリットも解説〖2025年最新版〗 – AI Market)。

これにより、教育内容自体もデータ駆動で改善され、より効果の高い学習が実現します。教師にとっても、クラス全体の理解度や進捗をダッシュボードで確認できるツールが登場しており、「どの生徒がどの単元で躓いているか」「クラス全体の苦手ポイントは何か」が一目でわかります。

機械学習による分析結果を参考にすることで、教師は指導計画を調整したり追加説明を行ったりでき、データに基づいた指導のPDCAサイクルを回せるようになっています。

最新のトレンドと今後の展望

教育における機械学習の活用は年々進化しており、特に生成AIや大規模言語モデル(LLM)の台頭は大きなトレンドです。

ChatGPTに代表される強力な対話型AIが一般に公開されたことで、教育分野でもこれを活用した個人チューターや学習補助ツールが次々と生まれています。

先述のKhanmigoのように、生徒と会話しながら思考を促すAIや、作文のドラフトに対して添削アドバイスを返すAI、さらには歴史上の人物になりきって質疑応答する教育チャットボットなど、創意工夫に富んだアプリケーションが登場しています (Harnessing GPT-4 so that all students benefit. A nonprofit approach for equal access – Khan Academy Blog)。

日本でもAI技術を活用した新サービスが増えており、たとえば生成AIによる解説生成機能を持つ教材(問題を解く過程をAIがステップごとに解説する)や、プログラミング学習で疑似教師なしでも進められるようにヒントを自動提示するシステムなどが試験提供されています (教育業界でのAI導入事例・おすすめサービス14選!メリットや注意すべき3つのデメリットも解説〖2025年最新版〗 – AI Market) (教育業界でのAI導入事例・おすすめサービス14選!メリットや注意すべき3つのデメリットも解説〖2025年最新版〗 – AI Market)。

また、大手教育事業者もAIを活用したバーチャル家庭教師サービス学習相談チャットを展開し始めており、生徒が気軽にAIに相談できる環境が整いつつあります。

このように機械学習(そしてその発展形であるAI技術)は、教育の現場を着実に変えつつあります。

個別最適化学習AIチューター自動採点学習分析といった活用により、学習者は自分のペースとニーズに合った学びができ、教師はデータに支えられた効果的な指導と業務効率化が可能になります。 (18 Machine Learning in Education Examples | Built In)

今後さらに技術が進歩すれば、まるで一流の家庭教師やコーチが常にそばについているような学習体験も可能になるでしょう。機械学習の力を上手に取り入れることで、教育の質とアクセスが飛躍的に向上し、一人ひとりの潜在能力を最大限に引き出すサポート役としてAIが活躍していくことが期待されています。

参考文献・情報源:

機械学習の分類に関する基本的な説明 (Three Types of Machine Learning You Should Know | Pecan AI) (Three Types of Machine Learning You Should Know | Pecan AI)、教育分野におけるAI活用の概況 (18 Machine Learning in Education Examples | Built In)、具体的事例(Duolingoによる学習最適化 (18 Machine Learning in Education Examples | Built In)、atama+による個別学習支援 (AI教材「atama+」の入学前教育での活用、立命館大学などの10大学30学部以上に拡大 | atama plus株式会社のプレスリリース)、KhanmigoのAIチューター (Harnessing GPT-4 so that all students benefit. A nonprofit approach for equal access – Khan Academy Blog)、自動採点システムの技術 (The Evolution of Education: How AI is Reshaping Grading | The Princeton Review)など)をもとに作成しました。

編集者ひとこと

「みんなのAI」第二回いかがでしたでしょうか?次々と新しい学習方法が生まれていますが、基本は今回学んだ「教師あり」と「教師なし」、さらに「強化学習」ですので、ここをしっかり押さえておきましょう。次回は、機械学習による画像認識の仕組みなども解説しますので、お楽しみに。

タイトルとURLをコピーしました