标准Gauss函数的变换
一般Gauss函数表达为标准Gauss函数的形式,即
g0,1(x)=1√2πe−x22
把任意 Gauss 函数 gμ,σ(x)中的x做平移与缩放,使之成为 std Gauss 函数,即: gμ,σ(x)⇒g0,1(x′)
gμ,σ(x)=1√2πe−(x−μ)22σ2=1√2πe−12(xσ−μσ)2=g0,1(ax+b)
通过以上推导得:
x′=ax+b
a=1σ,b=μσ
RBF由各种不同的Gauss函数线性组合而成, 用这种变换形式来描述RBF函数:
f(x)=b0+n∑i=1bigi(x)
各种不同的Gauss基函数是由一个标准Gauss函数通过平移和伸缩变换而来的,因此RBF就可以写成这样:
f(x)=ω0+n∑i=1ωig0,1(aix+bi)
换个方式看函数
神经网络
将Gauss函数看成网络
f(x)=ω0+n∑i=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+n∑i=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)=N∑i=1viφ(WTiX+bi)
❓ Why it works?
答:只要网络足够大,参数足够大,就能逼近任意函数。
❗ 存在的问题 与传统拟合一样存在同样的问题: 函数个数如何选?!
调参!
使用深度学习的方法
问题建模:理解问题、问题分解(多个映射级联)…
- 找哪个?
• 损失函数、各种Penalty、正则项… - 到哪找?
• 神经网络函数、网络简化… - 怎么找?
• 优化方法(BP方法)
• 初始值、参数…
调参:有耐心、有直觉…
本文出自CaterpillarStudyGroup,转载请注明出处。 https://caterpillarstudygroup.github.io/GAMES102_mdbook/