深度学习(ch6 Deep Feedforward Network) 19/5/18更新

(文章不定期增加更新,算是阅读笔记类型)

 

1. 观点:

深度前向网络和神经科学还是有着非常大的不同,在当前的情况下,深度网络的principle,discipline主要来自于数学(mathematical)和工程(engineering),而不是在跟着生物神经科学在做。对于深度网络的观点,更适合的是将其作为一个万能的函数逼近器。

 

2.线性模型的缺点:

难以建模两个样本点之间的关系(因为线性函数只是单个样本x的函数),SVM中的kernel trick实际上缓解了这一部分的问题

对于这种问题,有三种解决方式:1.建模深度学习(ch6 Deep Feedforward Network) 19/5/18更新,使得能过获得非线性 2. 手动的设置深度学习(ch6 Deep Feedforward Network) 19/5/18更新,即使用先验知识(主要来自于问题领域)来设计函数,但是这种方法需要人力 3.学习深度学习(ch6 Deep Feedforward Network) 19/5/18更新,即深度网络的方法。

 

3.异或学习的启示

可以看做XOR的预测是一个回归问题,使用均方误差来最小误差。这里先使用wx+b的线性模型(神经网络):

假设我们学习了一个函数深度学习(ch6 Deep Feedforward Network) 19/5/18更新,w是线性模型的参数,根据这个图形,如果从(1,0)(1,1)两个点来看,随着x1的增加,f(x)也应该增加,可是另外两个点(0,1)(1,0)表示应该减少,这个问题在线性情况下根本是无法解决的。

深度学习(ch6 Deep Feedforward Network) 19/5/18更新

有人可能会说,如果多做其次线性映射呢?比如深度学习(ch6 Deep Feedforward Network) 19/5/18更新

这种问题实际上就是还是一个线性映射而已,因为上面的式子可以表达为深度学习(ch6 Deep Feedforward Network) 19/5/18更新

为什么要强调这个问题?这是因为堆叠线性的神经网络还是线性的模型,是无法解决这种问题的,如果使用input-hidden-output,这样有两个层网络来预测XOR,但是中间都是线性函数,增加再多参数(层)都是无法解决这个问题的。

所以这就需要有**函数了。很简单,**函数就是非线性函数,现在一般使用ReLU,书中的具体例子我没时间详细描述了,还要做实验……简单说一下使用非线性以后的效果

深度学习(ch6 Deep Feedforward Network) 19/5/18更新

使用例子中的非线性函数以后,(0,1)(1,0)两点被映射到了同一个点上,这个实际上就是考虑了两个点之间的关系了,即点2里面说的样本之间的关系。可以看到,在这个学习到的空间内,三个点是很容易被一条线分开的,在这个学习到特征空间内,最后使用一个线性模型就可以解决问题了。

(2019.4.23,就更新到这了,后面的边看边写吧)

6.2 基于梯度的学习

1. 神经网络的不同之处:存在大量的非线性单元,导致优化目标是一个非凸的函数。

非凸函数意味着无法直接求出全局最优值。

2.初试化:凸优化问题在任意给定的初始参数下都是可以收敛到全局最优的,但是非凸函数则不同,不同的初试化意味着不同的搜索路径,不好的初试化可能会搜索到一个较差的最小值。

一般而言,我们会将权重赋的稍小,偏置一般设为0或者较小的正数。

3.一般而言,我们都是用基于极大似然估的交叉熵函数来优化模型,这使得我们避免了对每个模型都要重新设计一个损失函数,另外一方面,交叉熵中的-log是一个有效应对神经元饱和的方法,比如对于sigmoid等,通过-log可以回复出exp的输入。

(2019/05/18 emm更新有点慢,书已经看到300页了,写博客真的挺累的……)