講演資料
講義資料スライドの表紙です。スライド画像、または下の要約文中の青いページ番号リンクをクリックすると、別のタブで無駄なノイズのない、純粋なPDFビューア画面が起動し、指定されたページへ直接ジャンプして快適に閲覧できます。
全体概要
本セミナーは、2015年12月22日に丸山不二夫氏が主宰したマルレク(丸山レクチャー)の講義録であり、「機械学習技術の現在2」と題されています。その中心的なテーマは、「自然言語をコンピュータはどのように理解できるか」という問いと、それを実現するための現実的・先端的な技術の比較検討です。[p.1]
講義は大きく二つの柱から構成されています。第一の柱は、IBMが提供するWatson APIです。かつてクイズ番組「Jeopardy!」で人間のチャンピオンを破った旧Watsonと、現在のWatson APIは本質的に異なるシステムであるという問いかけから始まります。旧Watsonは、単独の質問に答える「質問回答システム」であり、Wikipediaを内包した自前の知識ベースと複数の評価システムを組み合わせた精巧な仕組みでした。これに対し、新しいWatson APIは、対話型のアシスタントシステムを開発者が構築するためのプラットフォームであり、その中核である「Natural Language Classifier」は、例文との類似度に基づいて発話の意図を分類します。さらに「Dialog」サービスによる会話フローのプログラミング、そして「Retrieve and Rank」によるApache Solrを基盤とした検索・ランキング強化が解説されます。MicrosoftのCortanaやAmazonのAlexaとの設計上の比較も行われ、いずれも「発話のパターンをあらかじめ人間が定義する」という設計思想が共通していることが明らかにされます。[p.5], [p.7], [p.11]
第二の柱は、GoogleのTensorFlowの登場と、Deep Learningが自然言語にどのようにアプローチするかです。特にChristopher Olaが執筆した「Deep Learning, NLP, and Representations」を参照軸として、Word Embeddingsの概念と、それが持つ驚くべき言語的・意味的な規則性(「king - man + woman ≈ queen」など)が詳述されます。[p.79], [p.80], [p.101]
TensorFlowは2015年11月にApache 2.0ライセンスでオープンソース化されたGoogleの第二世代の機械学習システムであり、データフローグラフを基盤とした柔軟なプログラミングモデルを持ちます。セミナーではWhite Paperの全章が日本語で詳解されており、技術的な深さと網羅性において際立っています。本講義全体を通じて、「知能をプログラムすること」と「知能を演ずることをプログラムすること」は本質的に異なるという洞察が通奏低音として流れています。[p.15], [p.117], [p.119]
講義のロードマップ
■ Part 1: Watson API — 新旧Watsonの比較と対話システムの設計
- この部の核心:
IBMのWatson APIは、Jeopardy!で活躍した旧Watsonの「後継」として語られることが多いが、著者はその本質的な違いを鋭く指摘します。旧Watsonが単独の質問に対して複数の評価エンジンを総動員して答えを絞り込む「質問回答システム」であったのに対し、新Watson APIは人間との自然言語による対話を可能にするサービス群であり、デフォルトの知識を一切持たないプラットフォームです。この転換は、「汎用的な知能」から「特定タスク向けの知能を演ずるシステム」への移行を意味します。[p.11], [p.13], [p.15]
- 論理展開:
- 旧Watsonの処理パイプライン:質問解析→候補生成→証拠検索→スコアリング→ランキング。Slot Grammarに基づく文法的解析を含む。[p.14], [p.16]
- Natural Language Classifierは、人間が用意した例文との類似度で発話を分類する(例:「Is it hot outside?」→temperature 98%)。[p.23], [p.24]
- Dialogは会話シナリオをXMLでプログラムする仕組みで、正規表現的なワイルドカード(`*`,`$`,`%`,`#`)で発話の揺れに対応する。[p.39], [p.55], [p.56], [p.57], [p.58]
- Retrieve and RankはApache Solr/Luceneを基盤としており、訓練データでランキングモデルを強化する構成。[p.65], [p.66], [p.67]
■ Part 2: Cortana・Alexaとの比較 — 対話システム設計の共通構造
- この部の核心:
MicrosoftのCortana、AmazonのAlexaは、いずれも「発話→Intent名→処理」という設計パターンを採用しています。Watson DialogのGrammarタグ、CortanaのListenForタグ、AlexaのSampleUtterances.txtは、いずれも「あらかじめ人間が想定した発話パターン」に基づいており、本質的な汎用性を欠くという限界を共有しています。[p.61], [p.62], [p.63], [p.64]
- 論理展開:
- Cortanaは`
`タグでスロット付きコマンドを定義し、発話とアプリ動作を対応させる。[p.62] - AlexaのSpeechlet(Java)は`onIntent()`メソッドでIntent名を受け取り、対応する音声レスポンスを返す。[p.63]
- SampleUtterances.txtでは「say hello」も「how are you」も同一のHelloWorldIntentに対応させる。[p.64]
■ Part 3: Deep LearningとNLP — Word Embeddingsと意味的表現
- この部の核心:
Christopher Olaの論考を軸に、Deep Learningが自然言語にアプローチする際の中核概念「Word Embeddings」が解説されます。語を高次元ベクトル空間に写像する関数Wを学習することで、意味的・文法的な規則性がベクトルの差として現れる(例:W("woman")-W("man") ≈ W("queen")-W("king"))という驚くべき性質が明らかになります。これは「意味をデータから学ぶ」ことの可能性を示す決定的な証拠です。[p.82], [p.90], [p.101], [p.103], [p.104]
- 論理展開:
- 2003年Benjioらの「統計的言語モデル」が原点。語彙10,000語で10語の文の組み合わせ爆発(次元の呪い)を神経網で克服しようとした。[p.83]
- Word2Vec(Mikolov, Google, 2013):CBOWとSkip-gramの二モデルで語の共起を学習し、ベクトル演算で意味関係を表現。[p.91], [p.92], [p.103]
- 二言語の埋め込み(英語・中国語)を同一空間に写像することで、未知の翻訳ペアも近傍に配置できる。[p.106], [p.107]
- 画像とテキストの共同埋め込み(DeVISE)により、未学習カテゴリの画像も正しい語の近傍に配置される。[p.108], [p.111], [p.112]
■ Part 4: Google TensorFlowの登場
- この部の核心:
2015年11月にオープンソース化されたTensorFlowは、GoogleのDistBeliefに続く第二世代の機械学習システムです。モバイルデバイスから数千GPUのクラスタまで同一コードで動作する「異種分散システム上の大規模機械学習」を実現するデータフローグラフモデルです。グラフ=計算の記述、セッション=計算の実行、テンソル=グラフを流れる型付き多次元配列、という三つの概念が基盤をなします。[p.117], [p.119], [p.120], [p.122]
- 論理展開:
- TensorFlowプログラムの構造:変数・グラフ定義 → 損失関数・最適化アルゴリズム定義 → セッション起動 → 繰り返し訓練。[p.135], [p.163]
- 線形回帰サンプル:`GradientDescentOptimizer(0.5)`で`reduce_mean(square(y-y_data))`を最小化。[p.134]
- 手書き文字認識(MNIST):`softmax(matmul(x,W)+b)`+cross_entropyをGradient Descentで最適化。線形回帰との構造的類似性を明示。[p.165], [p.167], [p.168]
- 勾配降下法の直感的解説:コスト関数J(θ₀,θ₁)の等高線図と、学習率αが小さすぎ・大きすぎる場合の挙動。[p.149], [p.156], [p.157], [p.158]
■ Part 5: TensorFlow White Paper 全章精読(日本語訳)
- この部の核心:
TensorFlow White Paper(2015年11月9日版)の全12章が日本語で詳解されます。Inceptionモデル移植の教訓、分散実行のSend/Receiveノード挿入メカニズム、自動微分(勾配計算のグラフへの組み込み)、TensorBoardによるグラフと統計量の可視化、EEGによるマイクロ秒精度のパフォーマンストレースなど、Googleの実務的な知見が凝縮された内容です。[p.171], [p.172], [p.230], [p.268], [p.289], [p.297]
- 論理展開:
- 第3章「実装」:単一デバイス→複数デバイス→分散実行の段階的解説。ノード配置はgreedy heuristicsで決定し、デバイス境界にSend/Receiveノードを自動挿入。[p.209], [p.210], [p.217], [p.218]
- 第4章「拡張」:自動微分(逆伝播をグラフ拡張として実装)、部分実行(feedノードとfetchノード)、Control Flow(Switch/Merge/Enter/Leave)、FIFOキューとシャフリングキュー。[p.227], [p.234], [p.242], [p.249]
- 第6章「経験」:Inception移植での6つの教訓(パラメータ数検証ツール、小さくスタート、学習率ゼロ検証、単一マシン優先デバッグ、数値エラー保護、誤差の大きさ理解)。DistBeliefに対して訓練時間を1/6に短縮。[p.268], [p.269], [p.270], [p.271], [p.272], [p.273], [p.274], [p.275]
- 第9章「ツール」:TensorBoardの計算グラフ可視化(36,000ノードを階層的に整理)、EEGによるCPU/GPU活動のマイクロ秒トレース。[p.289], [p.292], [p.296], [p.301], [p.302]
