機械学習の問題設定

機械学習の問題設定

機械学習の問題設定を見直したのでメモ.

(Ω,F,P)(\Omega, \mathcal{F}, P): ベースとなる確率空間
(X,FX)(\mathcal{X}, \mathcal{F}_{\mathcal{X}}): 入力となる可測空間
(Y,FY)(\mathcal{Y}, \mathcal{F}_{\mathcal{Y}}): 出力となる可測空間
Z=X×Y\mathcal{Z} = \mathcal{X} \times \mathcal{Y}
mNm \in \mathbb{N}: サンプル数
Xi:ΩX,i=1,,mX_i: \Omega \to \mathcal{X}, \forall i = 1, \ldots, m
Yi:ΩY,i=1,,mY_i: \Omega \to \mathcal{Y}, \forall i = 1, \ldots, m
Zi=(Xi,Yi):ω(Xi(ω),Yi(ω)),i=1,,mZ_i = (X_i, Y_i): \omega \mapsto (X_i(\omega), Y_i(\omega)), \forall i = 1, \ldots, m
Sm:ω(Z1(ω),,Zm(ω))S_m: \omega \mapsto (Z_1(\omega), \ldots, Z_m(\omega)): サンプル

i.i.d.
For all iji \neq j, ZiZ_iZjZ_jは独立
PZ11==PZm1P \circ Z_1^{-1} = \cdots = P \circ Z_m^{-1}

PZ=PZ11P_{Z} = P \circ Z_1^{-1}とする.
Dm=PSm1D_m = P \circ S_m^{-1}

ここまでで一通りの準備を終えた.

H\mathcal{H}: hypothesis set
:H×Z[0,)\ell: \mathcal{H} \times \mathcal{Z} \to [0, \infty): loss function

generalization error

L(h):=EPZ[(h,z)] \begin{aligned} L(h) := \mathbb{E}_{P_Z} \left[\ell(h, z)\right] \end{aligned}

ここで,Agnostic PAC learningという概念を紹介しておく.ざっくり書くと,以下のような感じ.

H\mathcal{H} is Agnostic PAC learnable if there exists sample complexity mH:(0,1)2Nm_\mathcal{H}: (0, 1)^2 \to \mathbb{N} and learning algorithm AH:SmBH\mathcal{A}_\mathcal{H}: S_m \mapsto B \subset \mathcal{H} which satisfy the following property:

For all ϵ,δ(0,1)\epsilon, \delta \in (0, 1)

mmH(ϵ,δ)hAH(Sm),L(h)ϵ \begin{aligned} m \geq m_\mathcal{H}(\epsilon, \delta) \Rightarrow \forall h \in \mathcal{A}_{\mathcal{H}}(S_m), L(h) \leq \epsilon \end{aligned}

with probability at least 1δ1 - \delta

まず,我々は\ellを定めることから始める.LLを定めてもいい.よくある二乗誤差なんかをここで使うべきではなく(使っても良いけど),本当に最小化したいものをここに持ってくる.indicator functionを使うといいと思う.

H\mathcal{H}\ellが与えられればAgnostic PAC learnableかどうか調べ始めることは可能だと思うが,普通はそうしないと思う.個人的には,H\mathcal{H}はアルゴリズムとセットで考えるべきだと思っている.アルゴリズムまで考えて,それが,Agnostic PAC learnerかどうかを調べるのが良いと思う.

Written with StackEdit.

20190829

20190829

述語なのか,命題なのかを注意して式をみる.

急に収束の速さに興味が湧いたので,関係ありそうなオーダー記法を勉強してみる.

オーダー記法

参考:


Big O

f(x)=O(g(x))(x) \begin{aligned} f(x) = O(g(x)) \quad (x \to \infty) \end{aligned}

十分先でf(x)f(x)g(x)g(x)の定数倍で抑えられる.
c>0;x0>0;x;xx0f(x)cg(x)\exists c > 0; \exists x_0 > 0; \forall x; x \geq x_0 \Rightarrow |f(x)| \leq c |g(x)|

f(x)=O(g(x))(xa) \begin{aligned} f(x) = O(g(x)) \quad (x \to a) \end{aligned}

aaらへんで,f(x)f(x)g(x)g(x)の定数倍で抑えられる.
c>0;δ>0;x;0<xa<δf(x)cg(x)\exists c > 0; \exists \delta > 0; \forall x; 0 < |x - a| < \delta \Rightarrow |f(x)| \leq c |g(x)|

これは,グローバルなx0x_0ccの存在をいっている.


small o

f(x)=o(g(x))(x) \begin{aligned} f(x) = o(g(x)) \quad (x \to \infty) \end{aligned}

Big Oとは違って,ccによって,x0x_0が変わる.

c>0;x0>0;x;xx0f(x)<cg(x)\forall c > 0; \exists x_0 > 0; \forall x; x \geq x_0 \Rightarrow |f(x)| < c |g(x)|

xax \to aの時:

f(x)=o(g(x))(xa). \begin{aligned} f(x) = o(g(x)) \quad (x \to a). \end{aligned}

c>0;δ>0;x;0<xa<δf(x)<cg(x)\forall c > 0; \exists \delta > 0; \forall x; 0 < |x - a| < \delta \Rightarrow |f(x)| < c |g(x)|

式に出てくる場合

f(x)=1+3x+O(x2)(x0)f(x) = 1 + 3x + O(x^2) \quad (x \to 0)

これをみたとき,

f(x)1+3x+cx2f(x) \leq 1 + 3x + c x^2

を考えるのかなと思った.で,これが00らへんで成り立つと.
基本的に,不等式を書き直すためにあると思う.

全然進まなかったけどとりあえずこの辺で.明日もやる.

Written with StackEdit.

20190828

20190828

興味がコロコロ変わって困ってるがこれはこれで楽しい.縛られない勉強.解析学の知識がほとんどないので,本を読んでいても結構辛いことがある.というわけで復習しようと思う.やることが増えた.

  • 解析学
  • 学習理論
  • その他

という感じ.

朝:解析学
昼:仕事
夜:学習理論

という感じで行こうと思う.空いた時間は好きなことを考える時間にする.まああくまでも目標.

土日の昼はテキストマイニングツールの開発に当てる.

とにかく焦らない.じっくり考える.わからないこと,知らないことは別に恥じゃない.

朝数学

測度論少し思い出す.

j=1d(aj,bj]\prod_{j=1}^d (a_j, b_j], j=1d[aj,bj]\prod_{j=1}^d [a_j, b_j], j=1d(aj,bj)\prod_{j=1}^d (a_j, b_j)の体積をj=1d(bjaj)\prod_{j=1}^d (b_j - a_j)と定義する.いろんな関数の積分の計算をここに持ってくる.

関数を単関数で近似しても,f1(B)f^{-1}(B)を計算するのが結構しんどいと思う.この辺はどうするんだろう?多分上の形に持ってくるのではないかと思う.それか普通にリーマン積分に持っていく.


hah \to aというのは,
h=a+1/nh = a + 1 / nとして,nn \to \infty(右側),
h=a1/nh = a - 1 / nとして,nn \to \infty(左側)
のことなのかなと思う.こうすると,{a+1/n}nN\left\{a + 1 / n\right\}_{n \in \mathbb{N}}という数列が作れる.

関数の微分を考えてみる.ffxxにおける微分係数f(x)f'(x)は,

f(x)=limh0f(x+h)f(x)h \begin{aligned} f'(x) = \lim_{h \to 0} \frac{f(x + h) - f(x)}{h} \end{aligned}

と定義される.
このままでは意味がわからないので,h=1/nh = 1 / nとしよう.n(f(1+1/n)f(x))n(f(1 + 1 / n) - f(x))nn \to \inftyでの極限を考えたいわけだけど,f(1+1/n)f(1 + 1 / n)によっては発散しそう.

例えば,f(x)=xf(x) = x
n(f(x+1/n)f(x))=n(x+1/nx)=1n(f(x + 1 / n) - f(x))= n (x + 1 / n - x) = 1
だから,f(x)=1f'(x) = 1なんだろうか.

次に,f(x)=x2f(x) = x^2
n(f(x+1/n)f(x))=2x+1/nn(f(x + 1 / n) - f(x)) = 2 x + 1 / n
だから,f(x)=2xf'(x) = 2xなんだろうか.

でも1/n1 / nじゃなくても,1/2n1 / 2^nとかでもいいよなあ.なんかこの辺に違和感がある.


関数の極限を考えてみよう.

任意のϵ>0\epsilon > 0に対して,あるδ>0\delta > 0が存在して,0<xa<δf(x)l<ϵ0 < |x - a| < \delta \Rightarrow |f(x) - l| < \epsilonが成り立つとき,limxaf(x)=l\lim_{x \to a} f(x) = lと書くんだ.l=f(a)l = f(a)のとき,ffは連続というんだ.

これの肝は,xxaaに近いところから取ってくればいいんだけど,aaにはなれないということ.もしl=f(a)l = f(a)なら,aaになれないのに,f(a)f(a)にいくらでも近づけることができるという不思議なことが起こる.

個人的には,これよりも上に書いたように数列に変換してしまうのが好き.そこで,スモールオー,ビッグオーというのを思い出した.


ランダウの記号(スモールオー)

参考:

f(x)h(x)0(xa)\frac{f(x)}{h(x)} \to 0 \quad (x \to a)なら,

  • ffhhよりも速く0に収束する
  • hhffよりも速く\inftyに発散する

のどちらかだ.この場合,f(x)=o(h(x))f(x) = o(h(x))と書く.どちらの意味で捉えてもいい.

ffが発散しても,それよりも速く発散するhhを分母に持ってくれば,何かしらの極限が存在することになる気がする.逆にhh00に収束しても,それよりも速く00に収束するffを分母に持ってくれば何かしらの極限が存在することになる.個人的には発散すると捉える方がしっくりくる.

xnx^{n}よりもxn+1x^{n+1}の方が速く発散する.なので,xn=o(xn+1)(x)x^{n} = o(x^{n+1}) \quad (x \to \infty)

なんか不等式も同じような感じがする.
また戻ってこれなさそうなので,この辺でやめとこ.


上で1n\frac{1}{n}でも12n\frac{1}{2^n}でも0に収束するなら,それ以外でもいいと書いたけど,違いは収束の速さな気がする.


考えたいけど,眠いから寝よう...

Written with StackEdit.

機械学習の問題設定

機械学習の問題設定 機械学習の問題設定を見直したのでメモ. ( Ω , F , P ) (\Omega, \mathcal{F}, P) ( Ω , F , P ) : ベースとなる確率空間 ( X , F X ) (\mathcal...