1.分类和模式识别
诊断,声音识别,文字识别
2.回归/拟合
3.模型完善(Mustervervollständigung)
。。。
模仿现实生活中动物的感知和反应原理
图中左边为从眼睛捕捉到事物到形成反应方案的过程。右边为对这个过程的模仿。
其中W为权值,o为输出X为输入向量,
Perceptron的学习过程是不断调整他的权值W,他的目标是找到最佳的超平面,通过这个超平面可以很好的对数据进行分类,使得处于超平面不同侧的数据在目标属性上具有不同的属性值。比如正负值问题,得到的对应的超平面应该能够使其一侧的值为正,而另一侧的为负。下图展示了正负问题的学习过程,原问题为一维问题,我们通过引入 x0 进行增维。初始W随机,X为训练数据。W为权值向量
对应的学习算法为:
start: 获得训练数据集P,N
随机初始化权值向量w(0)
t=0
Test:从P或N中随机选出一个点x
if(x in P && w(t)x>0) goto Test
if(x in P && w(t)x<0) goto Add
if(x in N && w(t)x<0) goto Test
if(x in N && w(t)x>0) goto Sub
Add:w(t+1)=w(t)+x
t=t+1
goto Test
Sub:w(t+1)=w(t)-x
t=t+1
goto Test
//注意要分正项错判和负项错判两种情况
//一般情况下,一w向量的方向为正,反方向为负
动机:
Perceptron的局限性,比如他解决不了异或问题。
构建MLNN:
反响传播(Backpropagation)
构建RBF网络:
神经元
学习
问题及优化:
问题:
当|w|>>|x|时,学习过程将十分缓慢。
对策:标准化
最糟糕的情况:
训练数据几乎反向平行,这是学习到死的节奏
对策是梯度下降-Delta规则
单独使用一个Perceptron无法实现XOR问题,但是通过Kernel方法我们可以实现这种功能
我么如下定义我们的Kernel:
已知两个向量 x⃗ ,y⃗ ,和相应到另一个空间的转换函数 ϕ 。那么我们定义kernel为:
构建一个MLNN一般要考虑下面三个问题:
1.构建网络:
MLNN含有一个或多个中间层或叫覆盖层
2.学习方法:
一般化的delta规则:向后传播
3.构建神经元:
区别于前面的这里一般使用的是非线性的激活函数
先看一下他长什么样子
//插图的家伙偷懒了,没把j加进去,还好下面的解释有提到
其实基本上了上面一样,只要知道j表示的是神经元的编号就是了。
xij 表示j号神经元的第i个输入。
wij 有点特殊,他表示神经元i和神经元j之间的权值。但想想好像也不是那么特殊。
outputs是输出神经元的集合
Downstream(j)表示神经元j的直接后继
//感觉 xij 应该解释为,神经元j从神经元i获得的输入。和原解释存在很大的区别,往下看看在做讨论??
非线性激活函数并不唯一,常用的有下面两种:
其中tanh为双曲函数:
已知:
1.训练数据集(input/output)
2.学习速率 η
3.Netztopologie网络拓扑结构:
中间层的数目,且层之间是单向向前全射(有全射这东西吗??)
(Anzahl und Ausmaße der Zwischenschichten.Schichten sind vorwärts gerichtet verbunden)
学习目标:
寻找合适的W,使得针对每个T中的input得到的结果和T中的output相匹配。
学习方法:
梯度下降法 → 一般化的Delta规则
1.用小的随机值来初始化权值
2.repeat:
选出一组训练数据d
获得输出值
计算输出误差
向后逐步算出误差在每个神经元的传播值:Delta_j
调整每个神经元的权值
其中:
误差函数:
RBF即radiale Basisfunktion,他是一个实数方程(reelle Funktion),他的值只和到起点的距离有关,即 φ(x)=φ(||x||) 。之所以叫这个名字是因为他是放射性对称的(radialsymmetrisch),并且它经常被用做拟合的基本方程(als Basisfuntionen einer Approximation)。
一般化的我们将RBF表示为: φ(x,c)=φ(||x−c||)
RBF有很多种,下面会用到的应该是:高斯RBF: e−(ar)2
RBF网络是Radial Basis Function网络的缩写 。他具有如下结构:
1.向前单向网络
2.由三层组成,分别是输入层,隐藏层(中间层)和输出层
3.Neuronen des hidden layer:lokale rezeptie Felder??只有在激活函数附近的点才回被分类,他以 μ 为中心(Zentrum/Mittelwert),以 σ 为影响范围(Reichweite/std. abweichung)。
这个激活函数是一个放射性对称的基本函数(radialsymmetrische Basisfunktionen): hi(||X−Xi||) Xi 表示对应神经元的中心向量,即上面提到的 μ 。X表示输入向量。
4.输出层的神经元的 输出为:
中间层:
给输入的维度加入一个权值,使各维度不对称(gewichtete Eingabediemensioinen →unsymmetrischeFelder )
总之就是把原来对称的结构,改成非对称的
还是BackProp:并通过梯度下降调整
范围中心:
1.非线性:高计算量
2.局部最小
3.激活函数的范围可以非常大://keine lokalen Felder ????
//其实三个都没懂???
/*这是一个建议,没懂????
Hybride Lernverfahren(als Idee)
Finden lokaler Felder:Zentrum und/oder Reichweite-unüberwacht,d.h. z.B. ohne die Sollausgabe zu betrachten(oder durch andere Verfahren)
Anpassen der übrigen Gewichte ÖAusgabeschicht-durch Gradientenabstieg
*/
上图显示了学习过程中的几种常见的问题,其中E表示误差,w表示权值。
学习的过程就是通过调整w即权值不断降低误差E的过程,他依赖于下面几个元素:
1.误差面的坡度//也就是梯度了
2.出现局部最小
3.Ausprägung der lok.Min.//不知要表达啥???
4.Lernrate//太大了收敛不了
/*这里举例讲了几个问题,没懂???
Linear fit → Fehlerkurve,Lernen
Too large → Lernrate zu groß, keine Konverganz
Undetermined problem → Großes Tal,kein Minimum
*/
1.惰性变量(trägheitsterm,Momentum)
通过引入惰性变量 α 和上次权值的改变量,使得当前的权值改变不仅受梯度的影响,而且还受上一回改变的大小的影响。通过这种方法可以有效的解决上图中右上和右下方的图像中出现的问题(flache Plateau,steilen Schluchten)。新的改变量表示为:
层的数量 ↔ 激活函数:
激活函数应该和层数相匹配,
比如,当只有三层的时候,对应的激活函数建议用sigmoid函数,当然也可以使用其他的函数,但还是建议使用下面两类函数:
1.任意的布尔函数
2.任意的连续函数
对于四层的情况,使用sigmoid函数也是极好的,当如果要用其他函数,好吧还真没有什么限制
/*不理解为什么,写着3层对应sigmoid,然后又写可以是任意布尔函数或连续函数???????????????????
3 Layer(1 hidden Layer-sigmoid):
.jede Boolsche Funktion abbildbar
.jede kontinuierliche baschränkte Funktion
4 Layer(2 hidden Layer -sigmoid)
.beliebige Funktionen mit beliebiger Genauigkeit
schon eine geringe Tiefe ist ausreichend
Lernverhalten-Topologieauswahl
Anzahl der Neuronen pro Schicht im Bezug zu der Anzahl von(stochastisch unabhängigen)Lerndaten ist wichtig
-allgemeine Aussage zur Topologie nicht möglich
Topologie ↔ Kapazität(VC-Dimension)
Beispiel:
gestrichelte Kurve
soll eingelernt werden
*/
另外在确定神经元的数量之前,最后还要考虑一下,训练数据集的大小。如果训练数据不足,最好还是不要有太多的神经元比较好。
目标:在训练NN的同时,优化他的拓扑结构
由于大小问题可能导致的问题//为什么不直接叫大小呢,难道还有区别???
(Anpassung der Kapazität)
1.网络过大可能导致背诵数据//什么意思,没懂????
2.扩展过小的网络知道能够学习数据//还是没懂????
缩减的方法(Methoden der Reduzierung)
Weight Decay, Weight Elimination:
根据w的大小,加入额外的惩罚。
//前面的英语不知道是什么意思???
DDA是用于构建NN分类器的RBF-Topologie:
1.输入层的神经元数量对应着输入空间的维度
2.中间层包含着RBF单元,这些单元会在训练过程中逐渐加入。并且每个单元的输入都对应着输入层每个神经元的输出(单元就是神经元的意思,有点写晕了)
3.输出层的每一个神经元对应这分类器的一个类。
DDA和普通的MLP(多层感知器Multi Layer Perceptrons)的主要区别在于激活函数和中间层的传播规则(propagation rule):
RBF使用小范围的(localized function)radial Gaussians作为激活函数。另外他还用到一个独立参考点得欧几里距离替代MLP中使用的标量积://这点就是MLP中的权值吧???
∀x⃗ ∈训练数据(oBdAx⃗ ∈A) do
if ∃nAi:oAi(x⃗ )>=θpos
wAi+=1.0
else 建立新的节点 nAjA+1
μ⃗ =x⃗
σAjA+1=max{σ|∀B≠A,1<=k<=jB:oAjA+1(μk→B)<θneg}
wAjA+1=1.0
∀B≠A∧1<=k<=jB:σBk=max{σ|oBk(x⃗ )<θneg}
//最后一句不理解,感觉像是个条件,为什么放在这里。另外如果没有满足条件的新的节点怎么办??
//另外刚开始的时候还没有B,那么岂不是A的范围,可以直接无穷大,那其他人都不用玩 了??而且在算法执行过程中,并没有调整范围的说法,那不是先看谁,谁就比较牛逼吗??
在使用MLNN的时候需要逐步确定一下内容:
1.符号化输入输出
2.选择训练数据
3.选择训练方法(Auswahl des Verfahren)
4.选择拓扑结构
5.参数调整(Parametereinstellung)
把训练数据分成三分
一份作为训练用(Lerndaten),用以调整权值
一份作为测试用(Testdaten),用于测试错误,过适应(overfitting)
一份作为确认用(Verifikationsdaten),用于确定其普遍性
(für das Feststellen der Generalisierung)
那么什么才算是好得训练数据呢:
**分布均匀(gute Verteilung)
对于分类问题来说,数据应该来自所有的类。
而对于回归问题来说,数据应该来自整个定义域。
包含有复杂区域的数据(komplexe Regionen):
如边缘区域的数据或两个类的交界
//Verlaufsänderungen???不知在这里表示什么意思????
如上图表示MLNN中的改变是全局性的(global)而RBF是局部的
/*几个比较的准则,没看懂????
Verteilt(global)-Sigmoid MLNN
Änderungen wirken sich global aus
Generalisierung ist gut
Lokal RBF-NN
Änderungen nur lokal
Generalisierung schlechter
Vergleichskriterien:
Zielsetzung:Generalisierungsverhalten(verteilt)
Inkrementelles Lernen(Beibehalten von Wissen:eher lokal)
Interpretierbarkeit(lokal)
Einsatz in hybriden Lernarchitekturen(beide)
Umsetzbarkeit von bzw. in Fuzzy-Wissenbasen(lokal)
*/
不同的权值的初始化应该是不同的,否则这些权值初始相同的神经元会有相同的功能。
另外权值的初始化应该是随机的,均匀分布的,并且是小的。
( ⇒keineanfänglicheAusrichtung???? 不知表达的是啥意思)
有两种调整方法:
Patternlerning:
在每次学习的例子后进行调整
这中方法的学习速度快
但不是真得梯度下降//???
随机顺序 → 更好的逼近//???
/*上面四句的原文
Anpassung nach jedem Lernbeispiel
schnelles Lernen
kein “echter” Gradientenabstieg
zufällige Reihenfolge → gute Approximation
*/
Epochlearning:
权值改变为所有学习例子对应的权值改变的均值
在所有例子都学完后进行权值调整
这才是真得梯度下降
对错误的和离谱的训练数据不敏感
/*同上
Mittelung der Gewichtsänderung über alle Beispiele
Anpassung nachdem alle Beispiele propagiert wurden
“echter” Gradientenabstieg
nicht anfällig für Ausreißer/falsche Lerndaten
*/