5-1でAIは、棒人間の動きを見て「投棄」だと見分けた。今回はその逆である。「投げる」という言葉を与えたら、棒人間が投げる動作を新しく作り出せるだろうか? 動作は数1,196個の表だ。2つの動作を平均すると腕が折りたたまれ、数ごとにサイコロを振ると体が震える。4つの生成器を審査官の採点表で比べながら、「もっともらしい新しい動作」の条件を探る。
投棄犯は捕まえた。しかし、本部からの2つ目の問いが残っている。見分けるのに使ったあの数で、今度は動作を作り出すことができるか。
同じ3つの箱で、矢印の向きだけが違う。2つの向きを交互に押してみよう。
5-1の棒人間の場面を表に広げた。生成モデルが埋めなければならない空欄が、まさにこの1,196マスである。マスの上にマウスを乗せてみよう。
表のマスはでたらめではない。同じフレームの「右ひじ」と「右手首」はいつも0.16だけ離れていて(骨の長さ)、隣り合う2つのフレームの値はほぼ同じだ(動きはつながっている)。識別モデルはこの結びつきを知らなくても答えを出せるが、生成モデルはこれを守れないとすぐにぼろが出る。次のセクションで実際に壊してみる。
最も簡単な「新しい動作作り」は、既存の2つの動作を混ぜることだ。何を混ぜるかを変えてみよう。下の棒は、いまのフレームの骨10本が元の長さからどれだけずれているかを表す(棒が長いほど大きくゆがんでいる。5%を超えると赤)。
「投げる」+「手を振る」を座標平均で混ぜると、骨の長さの誤差は平均11.4%、最も悪い瞬間には99.9%になる。2つの手首が反対方向にあった瞬間、その中間点が肩とほぼ重なり、前腕が消えてしまったのである。「入れる」+「通り過ぎる」は1.9%(最悪25.7%)、「投げる」+「拾う」は1.4%(最悪20.4%)だ。角度平均は3組とも0.0%である。同じ「平均」でも、何の平均かが結果を分ける。
生成モデルが学ぶのは場面1つではなく、場面たちの散らばり方である。5-1と同じ方法で速度・位置・大きさを変えた投げる場面100個を広げた。左の点を押して場面を選んでみよう。
投げる場面100個から新しい投げる動作を6つ作る。審査官は5つの点を見る。本物らしいか(骨の長さ、揺れ、投げる力)、多様か、まねしていないか。生成器を替えて「作り直す」を押してみよう。
上の画面はブラウザで6個ずつ引き直したものなので、数値が少し違う。下の表はコード2を実際に実行した結果である(学習用の投げる場面100個、生成20個)。「新しさ」は、最も近い学習場面との距離(身長単位、座標ごとの二乗平均平方根)である。
| 生成器 | 骨の長さの誤差 | 揺れ | 手首の最大速度 | 多様性 | 新しさ | 審査官のひとこと |
|---|---|---|---|---|---|---|
| 学習データ(参考) | 4.7% | 0.0288 | 2.55 | 0.126 | 0.000 | ポーズ推定の揺れのせいで、本物のデータでも骨の長さが4.7%ぶれる |
| A 平均ひとつ | 1.7% | 0.0045 | 1.36 | 0.000 | 0.033 | なめらかだが毎回同じで、力が半分に落ちた |
| B 座標ごとにサイコロ | 44.2% | 0.2659 | 10.00 | 0.149 | 0.109 | 多様だが人間ではない。手首が瞬間移動する |
| C 1つ選んでコピー | 4.7% | 0.0300 | 2.75 | 0.125 | 0.000 | 本物らしいが、まねしただけ |
| D つまみ3個から抽出 | 0.0% | 0.0125 | 2.71 | 0.123 | 0.022 | 5項目すべて合格。ただし、つまみを最初から知っていた |
Dが勝った理由は、1,196個の数の代わりに3つの数(速度・位置・大きさ)から取り出したからである。3つの数はどう変えても、骨格(fk)を通って人の形に広がる。
どちらのコードも、Colabに標準でインストールされているライブラリだけを使う。「ノートブック(.ipynb)をダウンロード」したあと、Colabでファイル → ノートブックをアップロードから開くか、コピーして新しいノートブックのセルに貼り付ける。
5-1の場面関数に、骨の長さチェック(bone_error)と混ぜ合わせ(blend)を加えた。3組を座標平均と角度平均で混ぜ、骨の長さの誤差を比べる。自分のデータに置き換えるには、blendの2つの場面の部分に実際の動作座標を入れる(座標平均しかできないという点が、まさにこの回の問題である)。
投げる場面100個から生成器A~Dを作り、20個ずつ取り出して採点する。セクション6の下の採点表は、この出力からそのまま作られる。新しい生成器を試すには、judge("名前", 結果のリスト)に(46, 13, 2)の形の場面リストを入れる。
ChatGPT、Qwen、ClaudeのようなAIアシスタントに貼り付けるプロンプトである。「コピー」を押すと、プロンプトの後ろに選んだコードが一緒に付く。〔 〕の中を自分の状況に書き換えて使えばよい。
AIの答えは出発点にすぎない。提案された論文・数値・ライブラリ関数は、必ず原文と公式ドキュメントで確認する。実際の人の動作データを使うときは、撮影の同意とデータセットの利用条件(商用利用の可否など)をまず確認する。
本文の黄色い点線下線と同じ辞書である。セクション名を押すと、最初に出てきた場所へ移動する。
たとえは理解の第一歩だが、誤解の種にもなる。人の知覚と比べたたとえには強さを示した。直接 実際に同じ働きをするという根拠がある · 部分 一部の性質だけが似ている · なし 対応するものが知られていない
| 概念 | 日常のたとえ | 人の知覚のたとえ | たとえが外れるところ |
|---|---|---|---|
| 識別対生成 | テストの採点(答えが合っているか)とテストの出題(もっともらしい新しい問題を作る) | 部分的人間にとって、顔を見分けることと描くことは別の能力である | 出題者は意図をもって問題を作るが、生成モデルはデータの形に沿って取り出すだけである |
| 分布 | クラスの生徒の身長が集まっている形 | なし | 身長は1つの数だが、動作は1,196個の数が一緒に動く形なので、目で描くことはできない |
| 座標平均 | 2人の写真を半透明にして重ねる | なし | 写真を重ねると2人とも見えるが、座標平均は2人の中間の1人を作り、その人の腕は折りたたまれている |
| 潜在変数(つまみ) | オーディオミキサーの音量・音色のつまみ数個 | 部分的動作を「速く、大きく」のように、ひと言ふた言で覚えること | ミキサーのつまみには名前が付いているが、学習で見つけたつまみには名前がなく、意味が混ざっている(5-3) |
| 審査官 | オーディションの審査員 | なし | 審査員には好みがあるが、この回の審査官は決められた5つの数だけを見る。数に表れないぎこちなさは見逃す |
E-1 著者紹介 · E-2 学術参考文献 · E-3 図と数字の出典
講師、実務OJT担当者、チューター向けの運営ガイドである。時間は目安なので、実際の授業に合わせて調整する。
| 対象 | 5-1を終えた大学生・社会人。生成AIが「何を学ぶのか」の感覚をつかみたい企画者・実務者 |
|---|---|
| 前提知識 | 5-1の棒人間13点と6種類の場面、平均と標準偏差 |
| 学習目標 | ① 識別モデルと生成モデルの違いを、矢印の向きと「答えの数」で説明する ② 座標平均が骨の長さを壊す理由を例を挙げて示す ③ 生成結果を本物らしさ・多様性・新しさの3方向から評価する |
| 目安時間 | 読む30~40分・アニメーションの実演20分・Colab実習25分(コード1 10分、コード2 15分) |
導入5分(セクション1・2 逆にする)→ セクション3 動作の表8分 → セクション4 混ぜる実験12分 → セクション5 データの雲7分 → セクション6 生成器4つ13分 → 確認問題5分。
セクション2 15分 → セクション6の採点表を自分たちの業務の生成物(文書・画像・動作)に当てはめ、「本物らしさ・多様性・新しさ」の基準を作る30分 → セクション4で「表現選び」について討論15分 → コード2を実行し、新しい基準を追加30分。
入門者はセクション2・4・6だけ。中級者には、コード2に生成器E(学習場面2つを角度平均で混ぜる)を自分で作らせ、採点表に加えさせる。
| セクション | 立ち止まって問いかける質問 | 操作のコツ |
|---|---|---|
| 2 逆にする | 「作る場合の正解はいくつあるだろう?」 | 見分ける → 作るを交互に押す |
| 3 動作は表 | 「この表で、勝手に変えてはいけないマス同士の約束は?」 | 投げる動作で、0.8~1.2秒の列にマウスを乗せる |
| 4 混ぜる | 「半分ずつ混ぜたのに、なぜ腕が消えたのか?」 | 「投げる」+「手を振る」の座標平均で、赤い棒が長くなるフレームを探す |
| 5 データ | 「この雲から新しい点を取り出すと、どんな投げ方が出てくるだろう?」 | 赤い点と緑の点の境目あたりを押してみる |
| 6 生成器 | 「A・B・Cは、それぞれどの採点項目で落ちるか?」 | 生成器ごとに「作り直す」を2、3回押す |
| 誤解 | 正しい説明 | 見せる場面 |
|---|---|---|
| 生成モデルは正解を1つ作る | もっともらしい答えたちの分布から1つを取り出す。毎回違うのが正常である | セクション2、セクション6「作り直す」 |
| 平均が最も安全な生成である | 平均は多様性0であり、タイミングの違う動作を平均すると力が抜ける(手首の速度 2.55 → 1.36) | セクション6 生成器A |
| 数が多いほど表現として優れている | 1,196個の数は互いに結びついている。結びつきを守る少ない数(角度、つまみ)のほうが生成には向いている | セクション4 角度平均、セクション6 生成器D |
| 学習データとまったく同じなら最高の生成である | まねは新しさが0である。データの中の個人をそのまま出してしまう危険もある | セクション6 生成器C |
| 本物らしく見えれば評価は終わりである | 本物らしさ、多様性、新しさを合わせて見る必要がある。1つだけを見るとAやCが勝ってしまう | セクション6の下の採点表 |
3秒は46フレーム(0秒を含む)× 26 = 1,196個。5秒は76フレーム × 26 = 1,976個。
手 = (0, 1)となり、肩と同じ点になる。腕の長さは0、骨の長さの誤差は100%である。セクション4の「最悪99.9%」はこのような瞬間だ。角度を平均すると(−90°と+90°の平均は0°)、腕は下に垂れた長さ0.33の腕になる。
新しさが0だからである。学習データを覚えて出しているだけで、新しい動作を作れない。実際の人の動作や顔が含まれたデータなら、個人情報をそのまま出してしまう問題も起こる。
場面ごとに投げる瞬間(タイミング)が違うので、座標を平均すると、速く振る区間が複数のフレームに薄く広がる。ピークがつぶれて、力の抜けた投げ方になる。
Dは場面を作ったつまみ(速度・位置・大きさ)を最初から知っていた。実際の動作データには、こうしたつまみは付いてこない。データだけを見てつまみを見つけ出すのが、5-3のエンコーダ・デコーダの仕事である。
コード1で混ぜる割合を0、0.25、0.5、0.75、1に変え、「投げる」+「手を振る」の座標平均による骨の長さの誤差を表にまとめる。誤差が最も大きい割合とその理由を2文で書く。
コード2に、生成器E「学習場面を2つ選んで座標平均」とF「つまみ3個を学習範囲の外(大きさ×1.6)から抽出」を加えて採点する。Fの結果が本物らしさには合格しても、どんな問題があるか(缶はどこへ飛んでいくか)を報告する。
| 入門者 | セクション4の「座標平均対角度平均」1つだけをしっかり見れば、この回の半分は得られる |
|---|---|
| 発展 | GANとVAEが「審査官」を学習にどう組み込んでいるかを調べて発表させる。論文は原文で確認する |
| 次回 | 5-3 エンコーダ・デコーダ — データだけを見て、つまみ(潜在変数)を自分で見つける |
『5-2 見分けることから作ることへ』を最後まで読みました。研究室の仲間たちがひとことずつまとめます。