深度学习(ch6 Deep Feedforward Network) 19/5/18更新
(文章不定期增加更新,算是阅读笔记类型)
1. 观点:
深度前向网络和神经科学还是有着非常大的不同,在当前的情况下,深度网络的principle,discipline主要来自于数学(mathematical)和工程(engineering),而不是在跟着生物神经科学在做。对于深度网络的观点,更适合的是将其作为一个万能的函数逼近器。
2.线性模型的缺点:
难以建模两个样本点之间的关系(因为线性函数只是单个样本x的函数),SVM中的kernel trick实际上缓解了这一部分的问题
对于这种问题,有三种解决方式:1.建模,使得能过获得非线性 2. 手动的设置
,即使用先验知识(主要来自于问题领域)来设计函数,但是这种方法需要人力 3.学习
,即深度网络的方法。
3.异或学习的启示
可以看做XOR的预测是一个回归问题,使用均方误差来最小误差。这里先使用wx+b的线性模型(神经网络):
假设我们学习了一个函数,w是线性模型的参数,根据这个图形,如果从(1,0)(1,1)两个点来看,随着x1的增加,f(x)也应该增加,可是另外两个点(0,1)(1,0)表示应该减少,这个问题在线性情况下根本是无法解决的。
有人可能会说,如果多做其次线性映射呢?比如
这种问题实际上就是还是一个线性映射而已,因为上面的式子可以表达为
为什么要强调这个问题?这是因为堆叠线性的神经网络还是线性的模型,是无法解决这种问题的,如果使用input-hidden-output,这样有两个层网络来预测XOR,但是中间都是线性函数,增加再多参数(层)都是无法解决这个问题的。
所以这就需要有**函数了。很简单,**函数就是非线性函数,现在一般使用ReLU,书中的具体例子我没时间详细描述了,还要做实验……简单说一下使用非线性以后的效果
使用例子中的非线性函数以后,(0,1)(1,0)两点被映射到了同一个点上,这个实际上就是考虑了两个点之间的关系了,即点2里面说的样本之间的关系。可以看到,在这个学习到的空间内,三个点是很容易被一条线分开的,在这个学习到特征空间内,最后使用一个线性模型就可以解决问题了。
(2019.4.23,就更新到这了,后面的边看边写吧)
6.2 基于梯度的学习
1. 神经网络的不同之处:存在大量的非线性单元,导致优化目标是一个非凸的函数。
非凸函数意味着无法直接求出全局最优值。
2.初试化:凸优化问题在任意给定的初始参数下都是可以收敛到全局最优的,但是非凸函数则不同,不同的初试化意味着不同的搜索路径,不好的初试化可能会搜索到一个较差的最小值。
一般而言,我们会将权重赋的稍小,偏置一般设为0或者较小的正数。
3.一般而言,我们都是用基于极大似然估的交叉熵函数来优化模型,这使得我们避免了对每个模型都要重新设计一个损失函数,另外一方面,交叉熵中的-log是一个有效应对神经元饱和的方法,比如对于sigmoid等,通过-log可以回复出exp的输入。
(2019/05/18 emm更新有点慢,书已经看到300页了,写博客真的挺累的……)