注意这是篇头重脚轻的博客。大部分都在讲step1,2、3是飞快过去。
三个步骤
step 1
许许多多的逻辑回归(神经元)模型组成的神经网络
不同的连接方式导致不同的网络结构
网络参数蕴含在神经元模型中
与之前的线性回归,生成模型,判别模型不同的是,需要设计连接方式,之前是没有这个步骤的
fully connect feedforward network
最常见的连接方式/神经网络结构
也就是当连接方式,每一个神经元的参数确定下来,整个神经网络可以看作一个函数,输入输出都是一个向量
那么当参数未知时,我们可以定义一个函数集
“输入层”和其他层其实不一样,不是由神经元组成的,不算是一层
输出层是神经元组成的
中间的的都叫hidden layers,所谓deep,就是有很多hidden layers
神经网络原理
从输入到输出,其实是做了一连串的矩阵运算(乘法和加法)
写成矩阵运算的好处是可以使用GPU(并行计算技术)加速
可以将输出层之前所有真正的层(即隐藏层)做的事看成是特征提取,也就是替代人做的特征工程
输出层做的事情是充当一个多类别分类器,整个输出层可看成一个softmax函数
例:手写体识别,输入是256维,输出是10维,取概率最大的当作结果
也就是充当手写体识别的是hidden layers和output layers
从非DL到DL什么变了
其实是把问题转化了,在没有DL时,需要做特征转换,得到一组比较好的特征。有了DL之后,可以直接把输入丢进模型。但DL制造的问题是加了决定网络的结构。
如果是语音、图像识别,决定网络结构应该比特征工程容易。(因为我们不知道人究竟怎么辨识语音和图像,决定特征很难)
在NLP方面则DL相对传统做法优势不那么显著。(因为人对语言掌握更多,设计特征时有迹可循)
Q1 可以让机器自己决定结构吗
可以的。
Q2 可以人为设计网络结构替代全连接前馈吗
ex:CNN
step 2
怎样决定一个网络的好坏?
和逻辑回归一样,使用交叉熵。
把所有数字输入后得到交叉熵求和得到Total Loss,接着要做的事就是从函数集找到那个能使Total Loss最小的函数,亦即找到那组能使Total Loss最小的参数
step 3
去找那个最好的函数——by梯度下降。
随机初始化所有的参数,计算损失函数对这些参数的偏微分,所有偏微分集合在一块就是梯度。
backpropagation
反向传播
神经网络中一种有效的计算微分的方式