深度学习之神经网络算法介绍
Posted 浙大统计学人
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习之神经网络算法介绍相关的知识,希望对你有一定的参考价值。
01 深度学习与神经网络算法
提到深度学习,大家的印象可能是这样的?
抑或是这样?
这些大部头的著作很容易给人艰深难懂的印象,使人望而却步。实际上,深度学习的入门还是很轻松简单的,今天,我就从深层神经网络(DNN)带你进入深度学习的海洋!
02 深度学习的应用
作为实现机器学习的一种技术,深度学习当然可以完成机器学习的各种任务,比如
→推荐系统(深层神经网络DNN的应用)
→图像识别(卷积神经网络CNN的应用)
→文字语义识别与机器翻译(循环神经网络RNN的应用)
当然,深度学习的应用如浩瀚星空,以上只是其中的小小一隅。而归结到底,DNN处理的还是分类任务。
分类任务指的是输入一个样本,其包含n个特性x1,x2,…xn,输出结果y。一个经典的例子是周志华老师的西瓜论,x1,x2,…xn代表西瓜的一些特性如颜色,瓜蒂,熟度等等,而 y代表这个西瓜是好瓜还是坏瓜。深度学习的任务就是用很多的样本训练之后,输入一个瓜的特性,判断这个瓜的好坏。
03 Logistic回归与多层神经网络
那么,要想了解神经网络是如何运作,而通过训练来作出判断的,我们就要从Logistic 回归,又称单层神经网络开始说起。
我们记一个训练样本x=[x1,x2,…xn] ,设置一个参数序列w=[w1,w2,…wn] , 采用线形回归函数
来输出结果, 但明显这个结果的值域很大,不符合我们分类问题的0或1的期望结果,我们就再采用sigmoid函数
对其做进一步处理,如下图所示
可以看到,这样y的估计值的值域就在[0,1]之间啦。
得到y的估计值后,我们再用下一节所介绍的梯度下降法将它与y的真实值比较,再在每一次训练中进行参数的调整,使得最终的参数符合最优的标准,即分类的结果与真实结果相差最小。
介绍完Logistic回归后,我们继续看多层向前神经网络。简而言之,多层神经网络就是多个Logistic回归的叠加:
以上为两层神经网络,此时的W1(第一层参数)的size就不再是 n✖1了,而是n✖k, k为第二层神经元的个数。所以一个样本经过第一层神经网络之后为
其size为
个,对于这k个神经元我们再采用类似于sigmoid的激活函数
而后继续对a[1]进行相类似于第一层的处理就可以得到结果啦。
而多层神经网络与两层神经网络完全一致,只不过是层数增加,每层的参数会增加,其理解复杂度不会变化。
04 梯度下降法
了解了神经网络的前向传播之后,我们要学习的就是如何训练我们的参数W和b了。
此时我们定义一个损失函数(Loss Function):
其中m为样本的个数,两个y相关的参数分别是y的估计值和真实值,且有
我们解释一下这个函数,当y=1时,y的估计值越接近于0,函数值整体越大;y=0时同理。
定义好损失函数之后,我们训练的目的就是使得损失函数最小,这当然是沿着梯度方向下降最好了。
如上图所示,最快使得损失函数到达最低点的情况就是参数沿导数方向走,即
当样本足够多的时候,L 会下降到一个很低的值,这样我们的训练就完成了。
在文章的最后,小统想给大家带来一个思考题:一般来说大家提到损失,第一个蹦入脑海的应该是平方损失
那么在神经网络与梯度下降法中为什么不用这个函数呢?
最后的最后,再给看到这里的大噶带来一个好消息——清华计算机学院自研的深度学习框架“计图”已经于近日开源啦!
其多项任务性能超过目前主流深度学习框架PyTorch,在机器视觉任务上性能甚至提高10%-50%,大家也可以去尝鲜啦!
浙大统计学人
文案:孙张诚
排版:林子跃
以上是关于深度学习之神经网络算法介绍的主要内容,如果未能解决你的问题,请参考以下文章