电子商务网站包括,继续浏览此网站(不推荐),wordpress破解,注册网络公司说明#xff1a;本系列是七月算法深度学习课程的学习笔记
1 背景介绍
深度学习在图片上的应用#xff1a;功能上讲#xff1a;图像分类和物体识别#xff1b;应用上#xff1a;可以用来分类图片#xff1a;白菜形状的玉器摆件、白菜、大白菜#xff1b;图片搜索#…说明本系列是七月算法深度学习课程的学习笔记
1 背景介绍
深度学习在图片上的应用功能上讲图像分类和物体识别应用上可以用来分类图片白菜形状的玉器摆件、白菜、大白菜图片搜索给照片打标签识别超市的蔬菜自动驾驶模仿画家作画拍立淘以图搜索产品。
深度学习在nlp上的应用模仿作家写作抽取图片中的文字。 综合应用识别图片中的物品以及人物。
2 神经网络非线性能力及原理
2.1 感知器与逻辑门
2.1 得分函数
线性分类器 分类问题输入图像数据输出所属分类线性分割f(x,W)。找到合适的映射函数f。
f(x,W) Wx 输入是一个32x32x3的图片W是一个10x3072的矩阵,x是一个3072x1的向量),其中W叫做参数或者权重。f称为得分函数。 把输入值全部展开就是一个3072x1的向量。 如果我们的分类是3个cat,dog,ship。 W中每一行是对一个分类的线性参数。 b是偏移相当于是截距。 最后一列是得分在哪个分类上得分最高就最 可能是哪种分类。
2.2 损失函数
f(x,W) Wx是否与实际符合需要用损失函数来衡量。 损失函数用来衡量参数W的吻合度。 损失函数1 hinge loss 支持向量机损失
衡量的是当前样本计算的得分与标准答案之间的差异到底有多大。 例如在图片分类中有3个分类标准答案是分类2那么蓝色的线就是分类2的得分。delta是警戒线。如果蓝色线是90分类1和分类3的得分都比90小那就分类正确没有损失。但是有点不靠谱。加个delta可以让正确答案更靠谱一些。其他分类的值只要不超过警戒线损失就是0否则就有损失。 计算每个错误分类的错误距离之和。对于第i个图片的损失值等于 Li∑j!yimax(0,f(xi,W)j−f(xi,W)yiδ)L_i\sum_{j!y_i}max(0,f(x_i,W)_j-f(x_i,W)_{y_i}\delta)Li∑j!yimax(0,f(xi,W)j−f(xi,W)yiδ)
损失函数2 交叉熵损失softmax 如果将每个分类上的得分记为s1s2s3。我们将它们处理为es1e^{s1}es1,es2e^{s2}es2,es3e^{s3}es3然后对他们做归一化得到概率。做指数的原因是每个分类的得分可正可负没法计算概率。 对于训练集中的第i张图片数据xix_ixi如果真实分类是dog如果我们把分类记为cat,dog,ship那真实的向量应该是[0,1,0]。如果我们计算得到的向量是已经是e的次方了[0.9,0.05,0.05]。那这个向量和真实的向量之间的差距有多大这时候从极大似然的角度来看我们会希望dog的概率pdogp_{dog}pdog是最大的从而logpdogp_{dog}pdog也应该是最大的。那么−logpdog-logp_{dog}−logpdog就会希望是最小值。
极大似然会将所有分类的概率乘积起来这里使用log是因为概率值比较小概率值相乘可能会超出计算机的精度范围。
那么最后得到损失函数对于训练集中的第i张图片数据xix_ixi在W下会有一个得分结果向量fff损失值等于 Li−log(efyi∑jefj)L_i-log(\dfrac{e^{f_{y_i}}}{\sum_{j} e^{f_j}})Li−log(∑jefjefyi) j:所有的类别,fyi{f_{y_i}}fyi是第i张图片计算得到的结果向量在正确分类上的数值。 例如上面例子中的Li−log(0.050.90.050.05)−log(0.05)3.0L_i-log(\dfrac{0.05}{0.90.050.05})-log(0.05)3.0Li−log(0.90.050.050.05)−log(0.05)3.0 这样我们的目标就是求LiL_iLi的最小值。
问题这里为什么不用MSE做损失函数 在做线性回归问题的时候也就是函数的结果值是一个连续的数例如房价预测我们经常使用MSE做损失函数。MSE是一个非凸的函数而交叉熵是一个凸函数。我们给交叉熵加入softmax之后是一个具有单调性的函数损失越大梯度越大非常利于梯度下降的反向传播。所以softmax经常和交叉熵一起使用。参考链接
2.3 神经网络
一般神经网络的结构分为输入层、1-多个隐藏层、输出层。
在logistic回归中 zθ0θ1x1θ2x2z\theta_0\theta_1x_1\theta_2x_2zθ0θ1x1θ2x2 ag(z)11e−zag(z)\dfrac{1}{1e^{-z}}ag(z)1e−z1 可以把这个看所一个神经元感知器。
神经网络有若干个这样的感知器。就相当于有多个logistic回归有多个线性切分。多个线性切分可以得到什么结果呢 2.3 非线性切分
logistic回归在上图数据中就没有办法画出非线性的边界。 通过神经元的逻辑与、逻辑或操作多个线性切分就可以画出复杂的决策边界。但是也是复杂的线性边界。
逻辑与
逻辑或 对线性分类器的与或 进行组合就可以得到复杂的线性切分
2.4 网络表达能力与过拟合问题
提升隐层层数或者隐层神经元的个数神经网络的容量会变大空间表达能力会更强。 解决方法不要试图通过降低神经网络参数数量来缓解用正则化或者dropout。
2.5 神经网络之激活函数
sigmoid 和 双s函数tahn通常是非线性函数。在每一个隐藏层后面都会加一个激活函数层。 加激活函数是要起到非线性的作用。否则无论加多少个隐层这个符合函数还是线性的。遇到下图这样的数据即使多复杂的线性表达式也不能完全区分。 如果使用激活函数例如sigmoid。三个隐藏层每层过sigomoid函数就能得到下图右边的效果。参考链接
2.6 BP与SGD
BP反向传播传播误差做题传回修正值。 SGD相当于改题找到梯度沿着梯度的方向更新参数