6.1 Example: XOR
6.2 Gradient-Based Learning
6.2.1 Cost Function
6.2.1.1 Learning Conditional Distributions with Maximum Likelihood
6.2.1.2 Learning Conditional Statistics
6.2.2 Output Units
6.2.2.1 Linear Units for Gaussian Output Distributions
6.2.2.2 Sigmoid Units for Bernoulli Output Distributions
6.2.2.3 Softmax Units for Multinoulli Output Distributions
6.2.2.4 Other Output Types
6.3 Hidden Units
6.3.1 Rectified Linear Units and their Generalizations
6.3.2 Logistic Sigmoid and Hyperbolic Tangent
6.3.3 Other Hidden Units
6.4 Architecture Design
6.4.1 Universal Approximation Properties and Depth
6.4.2 Other Architecture Considerations
6.5 Back-Propagation and Other Differentiation Algorithms
6.5.1 Computational Graphs
6.5.2 Chain Rule of Calculus
6.5.3 Recursively Applying the Chain Rule to Obtain Backprop
6.5.4 Back-Propagation Computation in Fully-Connected MLP
6.5.5 Symbol-to-Symbol Derivatives
6.5.6 General Back-Propagation
6.5.7 Example: Back-Propagation for MLP Training
6.5.8 Complications
6.5.9 Differentiation outside the Deep Learning Community
6.5.10 Higher-Order Derivatives
6.6 Historical Notes
前馈深度网络(Feedforward Deep Networks\feedforward neural networks),也称为多层感知机(multi-layer perceptrons(MLPs))。它的目的是找到一个最佳的映射 y=f(x) ,将输入x映射到一个类别y中。同时,这个映射可以表示为 y=f(x,θ) 。而Deep feedforward networks就是要找出这个 θ ,使得我们得到的这个 f 可以以一定程度地逼近真实的f∗。
补充一点,对于MLPs而言,是不存在输出反馈给自己的回路的。如果存在的话,这个神经网络就是recurrent neural networds(RNN)。原文上写的是There are no feedback connections in which outputs of the model are fed back into iteself.这里个人目前还不是很理解outputs fed back into iteself的具体概念,等待后期学习。
output layer: 前馈网络的最后一层。
hidden layer: 对于一个完整的神经网络,除去输入层和输出层的其他部分。
first layer: 输入层后的第一层,注意输入层并不是第一层。
神经网络使用的依旧是线性模型,但是该线性模型的作用对象并非输入 x ,而是x的一个经过非线性函数处理的变形体 ϕ(x) 。关于 ϕ(x) 的选择可以参考以下几点:
(1) ϕ(x) 的维数问题:简单来说, ϕ(x) 是可以利用好核的(kernel trick),比如RBF(径向基函数)。这里可以参考http://blog.csdn.net/cwcww1314/article/details/52425152。然而维数可以理解为这个变形体对Training set的特征的一个抽象和表达能力。维数越高,这个能力越强,但同时它的泛化能力就越弱。这里个人认为考虑的是一个模型复杂度引起的过拟合和欠拟合的问题。
(2) 在有深度学习之前,人们一直要用很多精力来完成这个manually engineer ϕ ,但具体这个manually engineer用到了那些步骤和方法,我也不是很懂啦。O(∩_∩)O~
(3) 在深度学习里,学习 ϕ 一般是使用模型:
一个简单的例子,讨论神经网络的非线性性。
XOR这个函数本身就是非线性的,图1可以看出,不可能画出一根直线,把这四个点分成期望的两个类:
神经网络的非线性性导致了它相应的损失函数(loss functions)编程了非凸函数。这意味着神经网络需要通过迭代式的、基于梯度的优化器随机梯度下降(Stochastic gradient descend),这个优化器逐步将损失函数的值降到局部最低值,且这个值极大依赖于初值点。然而对于诸如Logistic Regression和SVM由于它们优化的目标函数都是凸函数,因此可以直接收敛到全局最优值。
一般训练神经网络的总Cost function由两部分组成:原始的cost function(比如likelihood, 训练集和预测集的cross-entropy)以及一个regularization term。
For more information concerning regularization term, please refer to http://blog.csdn.net/zouxy09/article/details/24971995/。
一种比较常见的损失函数就是-log likelihood了。它等价于training data和the model distribution之间的交叉熵(cross-entropy)。关于交叉熵的更多https://www.zhihu.com/question/41252833。用数学公式表达:
这一节主要说的是一个学习的思想,在做这个学习的时候,我们优化的对象不再是一个固定函数类的对应参数,而是函数本身。而这一块需要的是变分方面的知识(calculus of variations)。例如有以下两种方法:
Mean squared error
为什么我们需要一个合适的Output Units?
因为Output units会影响最终cost function(cross-entropy)的形式。
线性output layer简单用公式表达就是:
先来回忆一发:
Bernoulli distribution 有一个糖两个小朋友,随机给一个小朋友
Binomial distribution 有很多个糖和两个小朋友,随机分配糖
Categorical distribution 有一个糖很多小朋友,随机给一个小朋友
Multinomial distribution 有很多糖和很多小朋友,随机分配糖
下面正题:
Sigmoid Units主要是用在伯努利问题的输出层上。因为这个时候输出y确定是2类中的一类。这个神经网络需要预测的是 P(y=1|x)ϵ[0,1] 。
假如说我们选用的output layer是线性的,譬如下式: