AI智能
改变未来

百度架构师手把手带你零基础实践深度学习 学习笔记(一)

百度架构师手把手带你零基础实践深度学习 学习笔记(一)

  • 样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?
  • 当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?
  • 随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。
  • 一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?
  • 梯度传播
  • 在AI Studio上阅读房价预测案例(两个版本)的代码,并运行观察效果。
  • 基于Python编写的模型和基于飞桨编写的模型在存在哪些异同?如程序结构,编写难易度,模型的预测效果,训练的耗时等等。
  • python中yield的用法详解
  • 扩展维度

样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?

当模型在训练阶段所接触到的参与训练的样本来自于训练集,而当模型投入使用时,模型会接触到的测试样本并不一定来自于划分好的测试集,而是从未接触过的样本。
因此将模型训练时视为只能接触到训练集样本,对训练样本做均值和极值计算来归一化,预测样本归一化时为了保证和训练样本保持一致的变换关系,才能进行准确的预测输出,因此使用训练样本的均值和极值计算。
由于预测样本不属于训练样本,预测样本以训练样本的参数进行归一化后有可能不在预计的归一化范围内。

当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?

1.训练到达loss的极小值点或者变化平缓的点。
2.找到极小值点可能不是最小值点,或有多个点为最小值。
3.因此并不意味完成训练。
4.可能会受到初始w,b的影响。

随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。

不考虑bn的情况下,batch size的大小决定了深度学习训练过程中的完成每个epoch所需的时间和每次迭代(iteration)之间梯度的平滑程度。
对于一个大小为N的训练集,如果每个epoch中mini-batch的采样方法采用最常规的N个样本每个都采样一次,设mini-batch大小为b,那么每个epoch所需的迭代次数(正向+反向)为 [公式] , 因此完成每个epoch所需的时间大致也随着迭代次数的增加而增加。

由于目前主流深度学习框架处理mini-batch的反向传播时,默认都是先将每个mini-batch中每个instance得到的loss平均化之后再反求梯度,也就是说每次反向传播的梯度是对mini-batch中每个instance的梯度平均之后的结果,所以b的大小决定了相邻迭代之间的梯度平滑程度,b太小,相邻mini-batch间的差异相对过大,那么相邻两次迭代的梯度震荡情况会比较严重,不利于收敛;b越大,相邻mini-batch间的差异相对越小,虽然梯度震荡情况会比较小,一定程度上利于模型收敛,但如果b极端大,相邻mini-batch间的差异过小,相邻两个mini-batch的梯度没有区别了,整个训练过程就是沿着一个方向蹭蹭蹭往下走,很容易陷入到局部最小值出不来。

batch size过小,花费时间多,同时梯度震荡严重,不利于收敛;batch size过大,不同batch的梯度方向没有任何变化,容易陷入局部极小值。

来自:浅析深度学习中Batch Size大小对训练过程的影响.

一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?

1000 / 20 * 5 = 250

梯度传播

在AI Studio上阅读房价预测案例(两个版本)的代码,并运行观察效果。


使用Python语言和Numpy库
使用飞桨
在本机或服务器上安装Python、jupyter和PaddlePaddle,运行房价预测的案例(两个版本),并观察运行效果。

基于Python编写的模型和基于飞桨编写的模型在存在哪些异同?如程序结构,编写难易度,模型的预测效果,训练的耗时等等。

使用飞桨框架代码量少,难度低,预测效果更好,耗时较长

python中yield的用法详解

链接: python中yield的用法详解——最简单,最清晰的解释.

扩展维度

# 扩展一个维度gradient_w = gradient_w[:, np.newaxis]
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 百度架构师手把手带你零基础实践深度学习 学习笔记(一)