标准Gauss函数的变换

一般Gauss函数表达为标准Gauss函数的形式,即

$$ g_{0,1}(x) = \frac{1}{\sqrt{2\pi } } e^{-\frac{x^{2} }{2} } $$

把任意 Gauss 函数 \(g_{\mu,\sigma}(x)\)中的x做平移与缩放,使之成为 std Gauss 函数,即: $$ g_{\mu,\sigma}(x) \Rightarrow g_{0,1}(x') $$

$$ g_{\mu ,\sigma } (x)= \frac{1}{\sqrt{2\pi } } e^{-\frac{(x-\mu )^{2} }{2\sigma ^{2} } } =\frac{1}{\sqrt{2\pi } } e^{-\frac{1}{2}(\frac{x}{\sigma } -\frac{\mu }{\sigma } )^2} =g_{0,1 } (ax+b) $$

通过以上推导得:
$$ x'=ax+b $$

$$ a=\frac{1}{\sigma },b=\frac{\mu }{\sigma }
$$

RBF由各种不同的Gauss函数线性组合而成, 用这种变换形式来描述RBF函数:

$$ f(x)=b_{0}+\sum_{i=1}^{n} b_{i} g_{i}(x) $$

各种不同的Gauss基函数是由一个标准Gauss函数通过平移和伸缩变换而来的,因此RBF就可以写成这样:

$$ f(x)=\omega_{0}+\sum_{i=1}^{n} \omega_{i} g_{0,1}\left(a_{i} x+b_{i}\right) $$

换个方式看函数

神经网络

将Gauss函数看成网络

$$ f(x)=\omega_{0}+\sum_{i=1}^{n} \omega_{i} g_{0,1}\left(a_{i} x+b_{i}\right) $$

RBF函数可以画成这样:

👆 [58:00] 用神经网络来描述RBF公式
✅ 其中\(\omega_0, \omega_i, a_i, b_i\)都是待优化的函数。 当n足够多时,f(x)可以逼近任何函数。
\(x\) 本身一维,考虑到平移,再升一维。隐层的1是指基函数线性组合后整体增加一个平移。
在这里, std gauss 相当于激活函数。连接线上的数值 \((a_i,b_i,\omega _i)\)是网络参数。\(n\)对应网络隐层的结点个数,需要手调。

神经元

一个神经网络就是一个函数

💡 从传统机器学习到神经网络,这是我见过的最好的解释。
✅ 参数的初值很重要,最好能根据物理意义找到初值。

RBF 神经网络

RBF (Radial Basis Function),径向基函数,是高维的高斯函数。

RBF 神经网络的问题是,关于 \(a,b\) 的导数难求,高阶且非凸, 难以优化。只能找局部最小,因此初值很重要。

核函数思想

没解释

Gauss函数的特性:拟局部性

没解释

Guass拟合函数的进化

激活函数的选择?

启发:由一个简单的函数通过(仿射)变换构造出一组基函数,张成一个函数空间

关键是基函数的表达能力是否足够强:是否完备/稠密的?

机器学习的本质是在做拟合。

高维情形:多元函数

🔎 见【多元函数】,link

变量的多个分量的线性组合

$$ (x_1,x_2,...,x_n)\longrightarrow g_{0,1}(a^i_1x_1+a^i_2x_2+...+a^i_nx_n+b_i) $$

单隐层神经网络函数:

$$ f(x_1,x_2,...,x_n) = \omega_{0}+\sum_{i=1}^{n} \omega_{i} g_{0,1}(a^i_1x_1+a^i_2x_2+...+a^i_nx_n+b_i) $$

高维只是在输入层,输出层纵向多加几个圈
共享基函数,使用不同的系数

多层神经网络:多重复合的函数

线性函数和非线性函数的多重复合

$$ a_1^{(2)}=f(W_{11}^{(1)} x_1+W_{12}^{(1)}x_2+W_{13}^{(1)} x_3+b_1^{(1)}) $$

$$ a_2^{(2)}=f(W_{21}^{(1)} x_1+W_{22}^{(1)} x_2+W_{23}^{(1)} x_{3}+b_{2}^{(1)}) $$

$$ a_{3}^{(2)}=f(W_{31}^{(1)} x_{1}+W_{32}^{(1)} x_{2}+W_{33}^{(1)} x_{3}+b_{3}^{(1)}) $$

$$ h_{W, b}(x) =a_{1}^{(3)}=f(W_{11}^{(2)} a_{1}^{(2)}+W_{12}^{(2)} a_{2}^{(2)}+W_{13}^{(2)} a_{3}^{(2)}+b_{1}^{(2)}) $$

通常每层使用相同的激活函数,方便优化
增加网络的深度和宽度,都会极大膨胀参数个数
同样参数量级下,通常深的比宽的好,因为深的自由度更高

用神经网络函数来拟合数据

Regression problem
Input: Given training set \((x_1,y_1), (x_2,y_2),(x_3, y_3)\),….
Output: Adjust parameters \(0\)(for every node)to make: $$ h(x_i)\approx y_i $$

$$ F(X)=\sum_{i=1}^{N} v_i\varphi (W^T_iX+b_i) $$

❓ Why it works?
答:只要网络足够大,参数足够大,就能逼近任意函数。

❗ 存在的问题 与传统拟合一样存在同样的问题: 函数个数如何选?!
调参!

使用深度学习的方法

问题建模:理解问题、问题分解(多个映射级联)…

  • 找哪个?
    • 损失函数、各种Penalty、正则项…
  • 到哪找?
    • 神经网络函数、网络简化…
  • 怎么找?
    • 优化方法(BP方法)
    • 初始值、参数…

调参:有耐心、有直觉…


本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/