Loading [MathJax]/jax/output/HTML-CSS/jax.js

标准Gauss函数的变换

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

g0,1(x)=12πex22

把任意 Gauss 函数 gμ,σ(x)中的x做平移与缩放,使之成为 std Gauss 函数,即: gμ,σ(x)g0,1(x)

gμ,σ(x)=12πe(xμ)22σ2=12πe12(xσμσ)2=g0,1(ax+b)

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

a=1σ,b=μσ

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

f(x)=b0+ni=1bigi(x)

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

f(x)=ω0+ni=1ωig0,1(aix+bi)

换个方式看函数

神经网络

将Gauss函数看成网络

f(x)=ω0+ni=1ωig0,1(aix+bi)

RBF函数可以画成这样:

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

神经元

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

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

RBF 神经网络

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

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

核函数思想

没解释

Gauss函数的特性:拟局部性

没解释

Guass拟合函数的进化

激活函数的选择?

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

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

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

高维情形:多元函数

🔎 见【多元函数】,link

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

(x1,x2,...,xn)g0,1(ai1x1+ai2x2+...+ainxn+bi)

单隐层神经网络函数:

f(x1,x2,...,xn)=ω0+ni=1ωig0,1(ai1x1+ai2x2+...+ainxn+bi)

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

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

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

a(2)1=f(W(1)11x1+W(1)12x2+W(1)13x3+b(1)1)

a(2)2=f(W(1)21x1+W(1)22x2+W(1)23x3+b(1)2)

a(2)3=f(W(1)31x1+W(1)32x2+W(1)33x3+b(1)3)

hW,b(x)=a(3)1=f(W(2)11a(2)1+W(2)12a(2)2+W(2)13a(2)3+b(2)1)

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

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

Regression problem
Input: Given training set (x1,y1),(x2,y2),(x3,y3),….
Output: Adjust parameters 0(for every node)to make: h(xi)yi

F(X)=Ni=1viφ(WTiX+bi)

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

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

使用深度学习的方法

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

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

调参:有耐心、有直觉…


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