1.深度学习入门介绍--神经网络数学基础

一.神经网络主要围绕以下几个方面:

层:多个层组成的网络(或模型)。(神经网络核心组件,相当于数据处理模块,进去一些数据,出来的数据更加有用。)

输入数据和相应的目标。

损失函数:即用于学习的反馈信号

优化器,决定学习过程如何进行

例:output=relu(dot(w , input) + b)

w,b都是张量,均为该层的属性。他们被称为该层的权重可训练参数,分别对应于kernal,bias属性。这些权重包含网络从训练数据中学到的信息。

训练循环:

(1)抽取训练样本x和对应目标y组成的数据批量。

(2)在x上运行网络,这一步叫做前向传播,得到预测值y_pred

(3)计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离。

(4)更新网络上的所有权重,使网络在这批数据上的损失略微下降(难点)

方法:基于梯度的优化。

二.随机梯度下降

梯度是张量运算的导数,它是导数这一概念像多元函数导数的推广。

给定一个可微函数,理论上可以用解析法找到它的最小值,函数的最小值是倒数为0的点,找到所有倒数为0的点,计算函数再哪个点具有最小值。

但是,将这个方法用于神经网络时,对方程gradient(f)(w) = 0求解时,这是包含N个变量的多项式方程,对于实际的神经网络是无法求解的

神经网络的每一个权重参数,都是空间中的一个自由维度,神经网络中可能包含数万个甚至上百万个参数维度

(1)抽取训练样本x和对应目标y组成的数据批量。

(2)在x上运行网络,这一步叫做前向传播,得到预测值y_pred

(3)计算网络在这批数据上的损失,用于衡量y_pred和y之间的距离。

(4)计算损失相对于网络参数的梯度【一次反向传播】

(5)将参数沿着梯度的反方向移动一点,比如:w -= step * gradient ,从而使得这批数据上的损失减小一点。step:叫步长,也叫学习率

这个方法叫做小批量随机梯度下降,随机:是指每批数据随机抽取

注意:学习率值的大小选取很重要,如果取值太小,则沿着曲线的下降需要迭代很多次,可能会陷入局部极小点,如果取值太大,则更新权重值之后,可能会出现在曲线上完全随机的位置。

解决局部极小点的一个方法叫做动量方法:即更新参数w时,不仅要考虑当前的梯度值,还要考虑上一次的参数更新。

链式求导:反向传播算法

将链式法则用于神经网络梯度值的计算,得到的算法叫做反向传播,也叫反式微分

三.深度学习的几何解释:

神经网络由一系列张量运算组成,而这些张量运算都只是输入数据的几何变换。因此,神经网络你可以理解为,高维空间中非常复杂的几何变换。

举例:将两张纸放在一起,然后将俩张纸揉成一个小球。

这个小球就是输入数据,每张只对应分类问题中的一个类别。神经网络(或者任何机器学习模型)要做的就是找到可以让纸恢复平整的变换。

让纸球恢复平整就是机器学习的内容:为复杂的,高度折叠的数据流行找到简洁的表示。

深度学习将复杂的几何变换逐步分解为一长串基本的几何变换。

总结:

1.输入图像分别保存为张量格式,分为训练数据和测试数据,其中训练数据包括图像和标签。然后训练数据输入到神经网络中。

2.构建网络,其中网络中包含各种层,每一层都会对输入数据进行一些简单的张量运算,这些运算都包含权重张量。权重张量是该层的属性,里面保存了网络学习到的知识。

3.损失函数,用于学习权重张量的反馈信号,训练阶段是损失函数最小化,其中,减小损失是通过小批量随机梯度下降来实现的。

4.epoch:所有训练数据迭代一次叫做一个轮次。

例子:输入60000个训练数据,bach_size大小为128,训练5个epoch,

最后,网络进行了2345次梯度更新。(每轮469次)

你可能感兴趣的:(深度学习,神经网络,深度学习,机器学习)