发布 https://blog.csdn.net/qq_17732497/article/details/108928646 https://www.youtube.com/watch?v=5L9ElIcmoqM&list=PLhdVEDm7SZ-PdtzOkXWb6xyAPxFInnpx-&index=5
误差修正学习(Error-Correction Learning)是一种有导师的学习过程,其基本思想是利用神经网络的期望输出与实际之间的偏差作为连接权值调整的参考,并最终减少这种偏差。 最常用的损失函数是均方误差(Mean Square Error): M S E = 1 M ∑ m = 1 M ( y m − y ^ m ) 2 MSE=\frac{1}{M}\sum^{M}_{m=1}(y_m-\hat y_m)^2 MSE=M1m=1∑M(ym−y^m)2 根据Widrow-Hoffman rule来更新权重。
基于记忆的学习是模仿大脑在记忆信息的过程。例如我们在考试时遇到了一道曾经学习过的相似问题。尽管题目中的数字改变了,但是我们仍然知道如何得到正确答案。在这个过程中,我们的大脑将遇到的问题同曾经遇到的所有问题进行比较,然后找到同这个最接近的问题。 在Memory Based Learning中我们给神经网络输入大量input-output匹配数据来学习。例如 x ˉ \bar x xˉ 是输入的向量,这个输入向量可能包含了大量的输入数据 x ˉ = { x 1 , x 2 . . . } \bar x=\{x_1, x_2 ...\} xˉ={x1,x2...},对应的输出是 d ˉ = { d 1 , d 2 . . . } \bar d=\{d_1, d_2 ...\} dˉ={d1,d2...}。整个系统输入就是 { x ˉ i , d ˉ i } i = 1 N \{\bar x_i, \bar d_i \}^N_{i=1} {xˉi,dˉi}i=1N。对于新的输入x,网络会返回同x最接近的数据对应d。
Hebbian Learning是模仿大脑工作机制去学习,或者说是模仿大脑的物理结构–大脑在学习过程中强化或弱化神经元之间的突触联系。这个现象是在实验中发现的,比如人反复重复某个活动(也就是学习),大脑同这个活动相关区域会反复受到刺激,相关的神经元突触权重(synaptic weights)会反复加强。当大脑长时间不使用这个活动时,相关突触权重会逐渐减弱,也就是大脑遗忘。 这个学习机制是Donald Hebb在《Organization of behavioral》1949提出的,可以看出提出的时间正好是我们建国时候……还是非常早的,到目前为止也没有特别有名的应用,主要问题据我了解,这个机制实在太复杂而且难以扩展应用。 假定现在有两个神经元A和B,同时A是指向B的。Hebbian就是类似新陈代谢更新,当A指向B这个动作被反复强调,那么A指向B这个能力也会被加强,可以理解成A是有可能指向很多很多神经元,但是开始这种指向都不明确,学习过程反复进行,A->B这种连接关系会变得非常稳固。这就是我们大脑学习新知识会发生的现象。Hebbian Learning就是类似我们在学习新知识时大脑中会发生的物理现象。Hebb假设是建立在神经生物学背景之上。那么如何将这种假设转换成为神经网络能够实现的方式呢? 方法就是两个简单的规则:
If two neurons on either side of a synapse are activated simultaneously, then the strength of that synapse is selectively inereased.If two neurons on either side of a synapse are activated unsynchronized, then the strength of that synapse is selectively decreased. 同时发生激活则连接加强,不同时则变弱Hebbian Learning的特征:
Time Dependent–对连接权重的更新仅同两侧神经元激活时间有关Local–对AB权重更新仅同他们两个有关,同其他的神经没有关系Strongly Interactive–只同AB激活有关Correlational–下面详细说Correlational相关性就是相互之间的联系属性,可以分为正相关、负相关和不相关。Hebbian中正相关会加强突触权重;负相关在Hebbian就是AB仅有一侧被激活而一侧是放松状态,突触权重会减弱;不相关……什么也不变。
与相关性(正相关、负相关和不相关)一样,顺带对Hebbian动作进行了分类:
HebbianAnti-HebbianNon-Hebbian前面的讨论都在理论直觉层面上,下面对Hebbian机制进行数学建模: △ w k j = F ( x j , y k ) \triangle w_{kj}=F(x_j, y_k) △wkj=F(xj,yk) 上面公式中j是前神经k是后神经,使用Activity Product rule,则是 △ w k j = η x j y k \triangle w_{kj}=\eta x_j y_k △wkj=ηxjyk η \eta η 是学习参数 ,如公式jk只有在全部正值时w才有正向更新,正是Hebbian之前描述的现象。不过呢,这个公式有个显而易见的问题就是,w更新是指数上升的,经过几次迭代后计算量会难以承受。 可以使用如下两个机制来优化Hebbian公式:
Forgetting factorCo-variance hypothesis增加遗忘项就是: △ w k j ( n ) = η x j ( n ) y k ( n ) − α y k ( n ) △ w k j ( n ) \triangle w_{kj}(n)=\eta x_j(n) y_k(n)-\alpha y_k(n)\triangle w_{kj}(n) △wkj(n)=ηxj(n)yk(n)−αyk(n)△wkj(n) 这样w更新就不会只上升了。 Co-variance hypothesis就是使用使用xy的平均来更新: △ w k j ( n ) = η ( x j − x ˉ j ) ( y k − y ˉ k ) \triangle w_{kj}(n)=\eta (x_j - \bar x_j)(y_k - \bar y_k) △wkj(n)=η(xj−xˉj)(yk−yˉk) 这不仅让w更新有了正负同时还让更新更加稳定。
以上就是大概数学公式了,更详细的可以参考别的论文,这个学习机制可以看出来先天适合无监督学习,毕竟只要输入匹配数据,网络可以自行更新,也不用其他监督条件了。
竞争学习是指神经网络的输出同自身其他神经元进行对抗。 其实非常类似hebbian learning,不同的是我们这里有输入输出N,M个神经元,输入输出神经元之间是全连接的,同时输出层之间也是连接的,但是输入层之间没有连接。在竞争学习中,在一轮学习中输出的M个神经元中只有一个会被激活更新。竞争学习也就是在学习这种连接关系。 竞争学习的基本要点:
A set of neurons that are all the same except for some randomly distributed synaptic weights.A limt is imposed on the strength of each neuron.Neurons compete for the right to respond to a given subset of inputs, such that only one output neuron is active. 在竞争学习中,输入层同输出层之间的神经元是激活状态的,但是输出层之间的神经元连接时阻碍的。这是因为竞争学习就是输出层之间的神经元相互竞争,每一个输出神经元都应该尝试超越其他的输出神经元。输出层之间的连接也被称为:lateral connections。 接下来就是,如何选择胜利的神经元? 如果一个神经元是赢家,它的 V k = ∑ x j w j V_k=\sum x_j w_j Vk=∑xjwj是神经网络中最大的。这个winning元被设定成1,其他的神经元则是0。因此对于某个输入X而言,只有赢家的突触是可以更新的,其他的突触尽管相连但是在此轮迭代中是不被更新的。 竞争学习规则是: △ w k j = η ( x j − w k j ) k wins the competition \triangle w_{kj}=\eta (x_j - w_{kj}) \text{ k wins the competition} △wkj=η(xj−wkj) k wins the competition 对竞争学习更直观的解释就是,比如聚类问题,有三个类别,每个类别都有一些样本,这些类别分布在一个高维空间中。竞争学习会尝试着让各个输出逐渐靠近这些类别(对每次输入的样本,肯定有一个赢家被激活然后更新靠近,如此往复这个赢家就达到了这个类别空间附近)。但是如果这些类别在空间中是重叠的,那么竞争学习会一直处于晃动状态无法学习,这也是竞争学习的弱点。 再比如说让神经网络学玩马里奥,这个通常用强化学习来做,也能用在竞争学习作为例子。输入就是马里奥的游戏画面,输出有三个动作前后跳,目标就是得分变高。考虑这样场景刚开始神经网络可能什么都不会做,但是这时候得分一直不变,它尝试输出向前运动,发现得分增加了。这时输入的像素里是马里奥前没有什么遮挡,因此向前运动这个输出就同前方没有遮挡这个像素空间匹配加强了。马里奥继续前进,前方没有遮挡同向前运动不断被强化,但是突然前方有了遮挡,这时候还前进则直接死了……通过不断迭代神经网络又发现前方有遮挡向上跳或者向后可能增加得分,这样又有其他动作被强化了。 其实上面例子就是competition for reinforcement learnining的例子,有非常多的例子,可以参考https://github.com/seungjaeryanlee/awesome-rl-competitions下面再对competition learning引申总结一下: 原始的competition learning首先是适合进行无监督聚类学习的,适合进行data mining。它需要事先知道总共有多少类别(否则无法设置输出层),使用的是Winner-Take-All策略。也因此比较受限制,有很多变种:
Hard Competition Learning 基于Winner-Take-All策略Soft Competition Learning 基于Winner-Take-Most策略,比较有名的有:Fuzzy C-means,Self-organizing Feature Map, 以及NG神经气体。Hard的方法就是之前写的,只不过更新策略有所不同而有了变种,比如是batch为单位进行更新或者on line在线更新。重点说一下后者Soft的方法,因为这里面还结合了Hebbian Learning方法,解决了hard方法对于初始化要求。 最有名的方法之一就是神经气体(Neural Gas)它不需要预先写死网络的维度。对于给定输入,它会从网络中所有节点按距离排序,一次更新一组节点,其他节点和节点强度都会以固定速率下降(也就是无用网格会消失)。这个方法一般会同其他方法结合来发挥更大作用:Neural Gas+Competition Hebbian Learning=Growing NG。 Growing NG有着非常多好的属性,重要的是它有着特别的作用:拓扑不变性。Growing NG在更新时原有的拓扑节点是不会降低(消失)的,它只会在网路附近增加边,这也就能保证它在很多场景下都保持自身原有拓扑结构不被破坏。 Growing NG又有着非常多类似/变种方法,如:Self-organizing Feature Map、Growing Cell Structures、Growing Grid。
相关推荐:https://blog.csdn.net/jucilan3330/article/details/83041706 https://github.com/topics/growing-neural-gas https://yarpiz.com/77/ypml111-neural-gas-network
玻尔兹曼学习是借鉴了热力学领域的思想,是个挺庞大的机制,可以参考其他的资料。 https://wenku.baidu.com/view/3d16db8364ce0508763231126edb6f1aff0071f5.html https://en.wikibooks.org/wiki/Artificial_Neural_Networks/Boltzmann_Learning