2012-02-07 
広告防止
2011-11-03
機械学習クラス8 ニューラルネットワーク:表現
■非線形仮説
- なぜ新しいアルゴリズムが必要か?
- ロジスティック回帰だと、特徴点の2乗、3乗を使おうとすると、特徴が多いと組み合わせが爆発する
- シグモイド関数
■ニューロンと脳
■モデル表現 I
- j段目のネットワークがsj個のユニット、j+1段目がs{j+1}だとすると、ウェイトΘ行列はs{j+1}×(sj + 1)次元になる。
■モデル表現 II
- レイヤーが1段だけと考えると、ロジスティック回帰と同じ!
■例と直感I
- ニューラルネットワークで論理演算(AND, OR)を組み立てられる。
■例と直感II
- NOT, XNOR
- レイヤーを重ねると複雑な計算が表現できる。
■多クラス分類
- 1対多を使う
- 最後のアウトプットがクラスの数で、一番大きなものがあてはまると考える。
■プログラム演習
- 手書きのアラビア数字の認識。
- 特徴は、20x20のピクセル値。5000のトレーニングセット。
- ピクセル値は-0.13196から1.1277という謎の範囲
- ロジスティック回帰で認識率94.9% 結構いい気が
- ピクセルってことは、回転拡縮したり左右にずらしたりするだけで全然対応できないよね?
- これってトレーニングセットと認識テストで、どちらも同じデータ5000個を使ってる?
- ニューラルネットワーク:すでに係数がトレーニング済み。認識率 97.5%
- ドキュメントやソースのテンプレートに詳しい説明が書いてあってほとんど実装するだけなんだけど、やっぱり動くと嬉しい。こうやって例を示してくれて手を動かすと理解がしやすいように感じる。ありがとう、Andrew Ng先生!
2011-10-30
AIクラス5 機械学習
■ラプラススムージング
通常の確率だと、分子が0になる要素があると確率が全て0になってしまって、困る。
ラプラススムージング(k) は、分子の頻度に+k、分母にクラスの数を足す(例えばスパム判定なら、スパムかスパムでないかの2、単語なら単語の種類の数)。
こうすることで、確率が0になるのを防ぎつつ、全体の確率は1を保つ。
■線形回帰
係数を直接求める計算式:
2011-10-24
機械学習 6. ロジスティック回帰 (Logistic Regression)
- こっちの問題は、ビデオを順に見ていけばまだついていける…
■分類 (Classification)
- Spam or Not Spam?
- 訓練データを y=0 または y=1 として学習する
- 線形回帰はうまく働かない
■仮説表現 (Hypothesis Representation)
- 0 <= hθ(x) <= 1
- hθ(x) = 1 / {1 + e^(-θTx)}
■コスト関数
- non-convex: 局所最小点がいくつもあるので、極小点に収束するとは限らない
- Cost(hθ(x), y)
- = -log(hθ(x)) if y=1
- hθ(x)→1 のとき Cost→∞
- = -log(1 - hθ(x)) if y=0
- = -log(hθ(x)) if y=1
■高度な最適化 (Advanced Optimization)
- Gradient Descent に比べて…
- Conjugate Gradient
- BFGS
- L-BFGS
- Octave だと
function [jVal, gradient] = costFunction(theta)
jVal = (theta(1) - 5) ^ 2 + (theta(2) - t) ^ 2;
gradient = zeros(2, 1);
gradient(1) = 2 * (theta(1) - 5);
gradient(2) = 2 * (theta(2) - 5);
options = optimset('GradObj', 'on', 'MaxIter', '100');
[optTheta, functionVal, exitFlag] = fminuc(@costFunction, initialTheta, options);
■複数クラス分類−1対他
- 1つとそれ以外で、y=1とy=0として計算
- hiθ(x) を最大にするiを選ぶ
2011-10-23
AI class 3. Probability in AI
ビデオ見ただけじゃわからんね…
■独立
- X⊥Y: P(X)P(Y) = P(X, Y)
- P(X2=H) = P(X2=H|X1=H) P(X1=H) + P(X2=H|X1=T) P(X1=T)
■Total Probability
- P(Y) = Σ P(Y|X=i) P(X=i)
- P(~X|Y) = 1 - P(X|Y)
■
- P(X, Y) = P(X|Y) P(Y)
■ベイズルール
- P(A|B) = P(B|A) P(A) / P(B)
- P(B) = Σ P(B|A=a) P(A=a)
P(B) を計算するのは一般的に難しいので、分子だけ計算してあとで Normalize する
- P'(A|B) = P(B|A) P(A)
- P'(~A|B) = P(B|~A) P(~A)
- => P(B) = P'(A|B) + P'(~A|B)
■条件付き独立 (Conditional Independence)
- T1 <- C -> T2
- P(T2|CT1) = P(T2|C)
- Cである条件のもとで、T1を条件に付け加えても変わらない
- Given A, B⊥C
- B⊥C|A
- B⊥C|A ≠ B⊥C
- P(T2|T1) = P(T2|T1,C) P(C|T1) + P(T2|T1,~C) P(~C|T1)
- = P(T2|C) P(C|T1) + P(T2|~C) P(~C|T1) (条件付き独立を適用)
- P(C|T1T2) = P(T1T2|C) P(C) / P(T1T2) (ベイズルール)
- = P(T1|C) P(T2|C) P(C) / {P(T1T2|C) P(C) + P(T1T2|~C) P(~C)}
■■例題
- P(C|+):テスト結果が+だった時、ガンである確率
- P(C|++):2つの条件付き独立のテストT1とT2が両方とも+だった時、ガンである確率
- P(T2=+|T1=+):1つ目のテストが+だった時、2つ目も+である確率
■Explaining Away
- S -> H <- R
- P(R|H,S) = P(H|R,S) P(R|S) / P(H|S) (どうやって変換したのかわからん)
- = P(H|R,S) P(R) / {P(H|R,S) P(R) + P(H|~R,S) P(~R)} (RとSが独立)
- P(R|H) = P(H|R) P(R) / P(H) (ベイズルール)
- P(H) = P(H|S,R) P(S,R) + P(H|~S,R) P(~S,R) + P(H|S,~R) P(S,~R) + P(H|~S,~R) P(~S,~R) (すべての条件を列挙)
- P(H|R) = P(H|R,S) P(S) + P(H|R,~S) P(~S)
■■例題
- P(R|H,S):HappyかつSunnyであるとき、Rise給料が上がった確率
- P(R|H):Happyであるとき、給料が上がった確率
- P(R|H,~S):Happyで曇りの時、給料が上がった確率
2011-10-08
DBクラス 関係代数 (RELATIONAL ALGEBRA)
- 演算した結果も関係を返す、演算が閉じている
- Selection: σ(シグマ) 条件によりローを選択
- Projection: π(パイ) 指定のカラムだけ取り出す
- Cross Product: × 全要素同士の掛け合わせ
- Natural Join: |><|(蝶ネクタイ記号) 同じカラム名の要素が等しいローを自動的につなぐ
- Theta Join: Cross Product かつ条件で絞込み
DBクラス SQL
■ Introduction to SQL
- 読み:シークエル
- DDL: Data Definition Languate
- Create table..., Drop table...
- DML: Data Manipulation Language
- Select, Insert, Delete, Update
- Other command
- Select statement:
- Select A1, A2, ..., An From R1, R2, ..., Rm Where condition
- π A1, ..., An (σ condition (R1 X R2 X ... X Rm))
■ 基本のSelect文
- distinctで重複するローを取り除く
■ テーブル変数とセットオペレータ
- union, intersect, except (difference)
■ サブクエリ
- CrossProduct だと重複する場合がある件
■ FromやSelect節でのサブクエリ
- 複雑…
■ アグリゲーション
- max, min, avg, sum, count など
- group by, having
■ null値
- 3値論理
- count(*) したとき、null値は省かれる(!)
2011-10-02
機械学習コース 線形回帰 (Linear Regression)
ビデオが細切れなのと、わからなかったら見返せるのがいいね。すでにぶっ通しでやり続ける忍耐力がない…。
■ Model Representation
■ Cost Function
2乗誤差を最小にするθ0, θ1を求める
■ Cost Function - Intuition I
θ0を0に固定してθ1だけの関数として、(1,1), (2,2), (3,3)のデータに対して手で計算してθ1を求める。
■ Cost Function - Intuition II
グラフを使って説明
■ Gradient Descent (最急降下法)
- 収束するまで続ける
- j=0とj=1について
- 同時に更新する
- θの初期値によって異なる点に収束する
- α: learning rate
- 偏微分項は次のビデオで説明する
■ Gradient Descent Intuition
- また、θ0は無視してθ1の1変数の場合で説明
- αは固定でもlocal minimalに収束する
- ステップを進めるにつれてαを小さくする必要はない
■ Gradient Descent For Linear Regression
- "Batch" Gradient Descent: 全てのデータを使う
- 反復なしで求める方法もある
2011-10-01
スタンフォードのDBコース イントロ
- Database Management System (DBMS)
- Massive, Persistent, Safe, Multi-user, Convenient, Efficient, Reliable
- Key Concept:
- Key people:
- DBMS implementer: Builds system
- Database designer: Establishes schema
- Database application developer: Programs that operate on database
- Database administrator: Loads data, keeps running smoothly
スタンフォードの機械学習コース イントロ
Machine Learning 公開されたので、ビデオを見てみる。
■ What is Machine Learning?
- 2つの大きな分類:教師あり学習と教師なし
- 他に、強化学習とかレコメンデーションシステムとかあるけど、後で
- 機械学習を実際の問題への適用方法も教える
■ Supervised Learning
- 例:家の価格を予測する
- データは、平米数と販売価格のセット
- 予測するには、フィットする直線を求めて、それによって販売価格を予測したい家の平米数に対応する価格を得る
- 直線じゃなくて、フィットする二次曲線を求めることもできる
- 実際に売買された家の平米数と価格のデータセットから、正しい答えを導く
- regression problem(回帰問題): 連続した値の予測をする
- 別の例:医療データから乳がんが悪性かどうか判定する
- 腫瘍の大きさから悪性か悪性でないかの二値に分類(Classification)する
- 特徴は1つだけじゃなくて、例えば腫瘍の大きさと年齢から悪性かどうか判定
- 直線で分割
- 特徴は無限に扱える
■Unsupervised Learning
- 例:Google ニュース:いろんなサイトの同じニュースがクラスタリングされる
- 別の例:DNA、特定の遺伝子を持つか?
- コンピュータクラスタの組織化、ソーシャルネットワーク分析、マーケットセグメンテーション、宇宙データ解析
- カクテルパーティー問題:2人が同時に話しているのを2つのマイクの録音から、分けて取り出す
- 普通にプログラムを書くとむちゃくちゃ大変だけど、Unsupervised Learningなら1行で書ける
- [W, s, v] = svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x');
- Octave: プロトタイプに非常に便利










