Skip to content

Latest commit

 

History

History
54 lines (32 loc) · 5.46 KB

AI学习笔记——神经网络和深度学习.md

File metadata and controls

54 lines (32 loc) · 5.46 KB

在之前的文章里面,我介绍了如何用Tensorflow或者Keras搭建神经网络,但是还没有介绍什么是神经网络。本文就用简单通俗的语言介绍一下,希望是抛砖引玉。

1.神经网络(Neural Network(NN))

一个典型的神经网络如下图 img

其最基本的神经元是由一个线性函数和一个非线性的激活函数组成: img

这个线性函数与之前线性回归是一样的,而激活函数可以理解为将输出的结果进行调控,比如使其保证在0和1之间。

与线性回归一样,神经网络实际上就是要训练找到合适的w 和 b。与线性回归一样,使用梯度下降(Grident Dscent)法,即可得到最优 的w和b。

非线性的激活函数有很多类,如图: img

Sigmoid 是早期比较流行的,不过现在用的最多的是ReLu,为什么简单的Relu能够比看起来更加合理的Sigmoid 更加有效,并不是这篇笔记要探讨的话题。

至于为什么要用激活函数,我想也很好理解,如果整个神经网络全是线性的话,那么无论这个网络有多复杂,最终都只是一个线性的,然而我们这个世界上的事物用线性模型就都能解释吗?显然不行。

2.深度神经网络(Deep Neural Network (DNN))

深度神经网络实际上就是将神经网络进行叠加,而中间层叫做隐藏层(Hiden layer), 隐藏层能够分辨出浅层神经网络无法分辨的细节。 img

3.前向传播和反向传播(Forward and Backward propagation)

前向传播其实很简单,就是如何堆砌这个神经网络,多少个Feature 输入,多少层神经网络,每层多少个神经元,每一层用什么激活函数。

最困难的是反向传播,类似于线性回归一样,我们的目的是要用合适的参数(W和b)使这个网络,或者说整个模型预测的值最接近真实的数值,换句话说就是预测值与真实值的差距最小。这个求这个差值的函数我们叫代价函数(Cost Function), 而反向传播就是通过预测结果,向前倒推每一层W和b的导数。通过这个导数我们就可以用梯度下降的方法训练出代价函数最小的W和b值。

反向传播涉及到了微分,和偏微分(偏导)递归等数学原理,虽然也不难,但是也并不在本文的讨论范围之内。不过好消息是在现在流行的深度学习工具中,比如在Tensorflow中, 我们只需要关心如何搭建这个网络(前向传播),工具会自动通过反向传播计算最优解,反向传播优化器的选择可以参见这篇文章。

其实听起来高大上的NN和DNN是不是很简单。


相关文章

Tensorflow入门———Optimizer(优化器)简介

Tensorflow入门——分类问题cross_entropy的选择

快速上手——解决过拟合(overfitting)的问题 快速上手——用Tensorflow处理分类问题 免费使用Google的GPU和TPU来训练你的模型 Tensorflow入门——Keras处理分类问题 Tensorflow入门——Keras简介和上手 Tensorflow入门——两分钟完成“线性回归“训练 Tensorflow入门——我的第一个tf程序

欢迎扫描二维码关注我的微信公众号“tensorflow机器学习”,一起学习,共同进步