深度学习的三个步骤
Step1:神经网络(Neural network)
Step2:模型评估(Goodness of function)
Step3:选择最优函数(Pick best function)
Step1:神经网络
神经网络有很多不同的连接方式,产生不同的结构(structure)。
Fully Connect Feedforward Network(全连接前馈网络)
全链接和前馈的理解
输入层(Input Layer):1层
隐藏层(Hidden Layer):N层
输出层(Output Layer):1层
为什么叫全链接呢?
因为layer1与layer2之间两两都有连接,所以叫做Fully Connect;
为什么叫前馈呢?
因为现在传递的方向是由后往前传,所以叫做Feedforward
矩阵计算
把这件事情写成矩阵运算的好处是,可以用GPU加速,GPU对matrix的运算是比CPU要来的快的,所以我们写neural network的时候,习惯把它写成matrix operation,然后call GPU来加速它。
本质:通过隐藏层进行特征转换
hidden layers看做一个feature extractor(特征提取器)。(下图的x,经过特征提取得到的一组最好的特征)
output layer(softmax)当做一个Multi-class classifier。
示例:手写数字识别
input与output形式与含义如下:
一个函数,输入是256维的向量,输出是10维的向量,我们所需要求的函数就是神经网络这个函数
注:input、output的dimension,加上network structure,就可以确定一个model的形状,前两个是容易知道的,而决定这个network的structure则是整个Deep Learning中最为关键的步骤
- 多少层? 每层有多少神经元?
这个问我们需要用尝试加上直觉的方法来进行调试。对于有些机器学习相关的问题,我们一般用特征工程来提取特征,但是对于深度学习,我们只需要设计神经网络模型来进行就可以了。对于语音识别和影像识别,深度学习是个好的方法,因为特征工程提取特征并不容易。 - 结构可以自动确定吗?
有很多设计方法可以让机器自动找到神经网络的结构的,比如进化人工神经网络(Evolutionary Artificial Neural Networks)但是这些方法并不是很普及 。 - 我们可以设计网络结构吗?
可以的,比如 CNN卷积神经网络(Convolutional Neural Network )
深度学习使得本来的如何抽取feature转化成怎么design network structure
Step2: 模型评估
损失示例(交叉熵(cross entropy)函数)
总体损失
Step3:选择最优函数
梯度下降
反向传播
在神经网络中计算损失最好的方法就是反向传播,我们可以用很多框架来进行计算损失,比如说TensorFlow,theano,Pytorch等等。
思考
为什么要用深度学习,深层架构带来哪些好处?那是不是隐藏层越多越好?
隐藏层越多越好?
层次越深效果越好~~
普遍性定理
参数多的model拟合数据很好是很正常的。下面有一个通用的理论: 对于任何一个连续的函数,都可以用足够多的隐藏层来表示。那为什么我们还需要‘深度’学习呢,直接用一层网络表示不就可以了?在接下来的课程我们会仔细讲到