(张老师PPT学习笔记)
一、在TensorFlow 中建立模型
1.TensorFlow 中的线性模型
- 占位符(Placeholder):表示执行梯度下降时将实际数据值输入到模型中的一个入口点。例如房子面积 (x) 和房价 (y_)。
- 变量(Variable):表示我们试图寻找的能够使成本函数降到最小值的变量,例如 W 和 b。
- 在TF中表示线性模型 (y = W.x + b) :
2.TensorFlow 中的成本函数
- 与将数据点的实际房价 (y_) 输入模型类似,首先创建一个占位符。
- 成本函数:
3.数据:房价(y_) 和房子面积 (x) 的实际数据点
4.梯度下降
有了线性模型、成本函数和数据,我们就可以开始执行梯度下降从而最小化代价函数,以获得 W、b 的「good」值。
0.00001 是我们每次进行训练时在最陡的梯度方向上所采取的步长;它也被称作学习率(learning rate)。
二、训练模型
- 1.变量初始化
- 2.TensorFlow 会话
训练包含以预先确定好的次数执行梯度下降,或者是直到成本函数低于某个预先确定的临界值为止。
所有变量都需要在训练开始时进行初始化,否则它们可能会带有之前执行过程中的残余值。
TensorFlow 是在一个会话中进行;创建一个会话 (sess) 然后使用 sess.run() 去执行。
- 在一个循环中调用 withinsess.run() 来执行上面的 train_step。
你需要将由 x, y_ 所组成的实际数据输入再提供给输入,因为 TensorFlow 将 train_step 分解为它的从属项:
结果
简单小结
- 实例:从一个单一特征预测结果。
- 我们选择了一个线性模型来拟合数据点,定义一个成本函数来表示最佳拟合,并使用梯度下降法反复调整参数W 和b 来训练我们的模型,使成本函数降到最小。
我们有一些房屋面积和房价的数据(灰色点)
我们使用线性回归对这些数据进行了建模(红色虚线)
我们通过训练该线性回归模型的 W(权重)和 b(偏置)找到了最小化「成本」(竖直蓝色实线的长度总和,这些蓝线代表了预测和实际输出之间的差异)的「最好」模型
给定任意房屋面积,我们可以使用该线性模型预测房价(带箭头的蓝色虚线)
三、模型的训练过程 training
我们的线性模型和成本函数[A]可以表示成下面的 TensorFlow 图:
接下来,我们选择一个数据点 (x, y_) [C],然后将其送入[D] TensorFlow 图,从而得到预测 y 和相应的成本。
之后,为了得到更好的 W 和 b,我们使用TensorFlow 的 tf.train.GradientDescentOptimizer [B]执行梯度下降以降低成本。用非技术的术语来说:给定当前成本,并基于成本岁其它变量(即 W 和 b)的变化方式,优化器(optimizer)将对 W 和 b 执行一些小调整(递增或递减)以使我们的预测更好地契合那个单个数据点。
这就是一个循环周期,称为epoch。
在下一训练 epoch 中,重复这些步骤,但使用一个不同的数据点!
四、Epoch与随机、mini-batch、batch梯度下降
- 在每个 epoch 送入单个数据点,这被称为随机梯度下降(stochastic gradient descent)。
- 也可以在每个 epoch 送入一堆数据点,这被称为 mini-batch 梯度下降,
- 或者甚至在一个 epoch 一次性送入所有的数据点,这被称为 batch 梯度下降。
四、学习率 learning rate
- 学习率(learn rate)是指梯度下降调整 W 和 b 递增或递减的速度。
- 学习率较小时,处理过程会更慢,但肯定能得到更小成本;
- 而当学习率更大时,可以更快地得到最小成本,但也有“冲过头” 的风险,导致没法找到最小成本。
- 克服这一问题,可以开始时使用较大的学习率(假设开始时的成本离最小成本还很远),然后随每个 epoch 而逐渐降低学习率。
五、继续回到房价预测问题——多特征的房价预测问题
引进一个新的特征——房间数量
- 目标变成:给定房间数和房屋面积,预测房屋价格。
回忆单一特征的线性回归(见下图左边),线性回归模型结果为 y,权重为 W,房屋大面积为 x,偏差为 b。
对于 2 个特征的回归(参见下图右侧),我们引入另一个权重 W2,另一个自变量 x2 来代表房间数的特征值。
- 增加新特征的这种方式效率低;随着特征数量的增长,所需的变量系数和自变量的数量会增加。实际的模型还会更多的特征。
- 那么,如何能有效地表示特征呢?
解决方法:矩阵 matrix
- 首先,让我们将表征两个特征的模型推广到表征 n 个特征的模型:
- 复杂的 n 特征公式可以用矩阵简化成:
- 单个数据点的 n 个特征与模型的矩阵形式的 n 个权重
数据可以用多维表示,这契合我们表征具有 n 个特征的数据点(左下方,也称为特征矩阵)以及具有 n 个权重模型(右下,也称为权重矩阵)的方式
比较