• 构建网络,初始化参数w和b,定义预测和损失函数的计算方法。
    • 随机选择初始点,建立梯度的计算方法和参数更新方式。
    • 从总的数据集中抽取部分数据作为一个mini_batch,计算梯度并更新参数,不断迭代直到损失函数几乎不再下降。

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

    • 随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。
    • 一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?

    基本知识

    1. 求导的链式法则

    图9:求导的链式法则

    2. 计算图的概念

    (1)为何是反向计算梯度?即梯度是由网络后端向前端计算。当前层的梯度要依据处于网络中后一层的梯度来计算,所以只有先算后一层的梯度才能计算本层的梯度。

    (2)案例:购买苹果产生消费的计算图。假设一家商店9折促销苹果,每个的单价100元。计算一个顾客总消费的结构如 图10 所示。

    总结 - 图2

    图10:购买苹果所产生的消费计算图

    • 前向计算过程:以黑色箭头表示,顾客购买了2个苹果,再加上九折的折扣,一共消费10020.9=180元。
    • 后向传播过程:以红色箭头表示,根据链式法则,本层的梯度计算 * 后一层传递过来的梯度,所以需从后向前计算。

    图11:乘法求导的公式

    作业题

    总结 - 图4

    图12:乘法和加法的导数公式

    图13:购买苹果和橘子产生消费的计算图

    • 挑战题:用代码实现两层的神经网络的梯度传播,中间层的尺寸为13【房价预测案例】(教案当前的版本为一层的神经网络),如 图14 所示。

    图14:两层的神经网络