说明:汇集相关资料整理,基本概念讲的比较清楚,总共整理下来分为四个部分,比较长,慢慢看。主要内容来自机器之心日本东京 TensorFlow 聚会联合组织者 Hin Khor 所写的 TensorFlow 系列介绍文章,需要会python;偏重概念理解,相关代码未全部验证,仅供参考。如果需要进一步理解代码与实现方法,可参考另外一篇。https://blog.youkuaiyun.com/ebzxw/article/details/81591437
第一部分 入门教程
引言
我们要解决的是一个过于简单且不现实的问题,但其好的一面是便于我们了解机器学习和 TensorFlow 的概念。我们要预测一个基于单一特征(房间面积/平方米)的单标量输出(房价/美元)。这样做消除了处理多维数据的需要,使我们能够在 TensorFlow 中只专注于确定、实现以及训练模型。
机器学习简介
我们从一组收集到的数据点开始(见下图),每个数据点代表两个值之间的关系——输出(房价)与影响因素(房子面积)。
然而我们无法预测没有数据点的特征的值(见下图)。
我们可以使用机器学习来挖掘它们之间的关系(见下图的「最佳拟合预测曲线」),即给定一个不属于数据点的特征值,我们可以准确地预测出输出(特征值和预测线的交点)。
步骤一:选择一个模型
1.模型种类
为了使用机器学习来做预测,我们需要选择一个能够拟合收集到的数据的最佳模型。
我们可以选择一个线性(直线)模型,并通过改变其陡度/梯度和位置对其进行调整,从而匹配数据点。
我们也可以选择一个指数(曲线)模型,并通过改变其曲率(curvature)和位置对其进行调整,从而匹配同一数据点集。
2.成本函数
为了比较哪个模型拟合得更严密,数学上我们将最佳拟合定义为一个需要被最小化的成本函数。 成本函数的一个简单样例是每个数据点所代表的实际输出与预测输出之间偏差的绝对值总和(实际结果到最佳拟合曲线的垂直投影)。用图表表示,成本函数被描述为下表中蓝色线段的长度和。
注意:更准确地说,成本函数往往是实际输出和预测输出之间的方差,因为差值有时是负数;这也称为最小二乘法。
3.线性模型简介
秉持简洁精神,我们将使用线性模型来对数据点进行建模。线性模型的数学表示是:
y = W.x + b
Where:
x: house size, in sqm
y: predicted house price, in $
为了调整模型来更好地拟合数据点,我们可以这样做:
1)调整 W 来改变线性模型的梯度
2)调整 b 来改变线性模型的位置
通过使用许多个 W、b 的值,最终我们可以找到一个最佳拟合线性模型,能够将成本函数降到最小。
除了随机尝试不同的值,有没有一个更好的方法来快速找到 W、b 的值?
4.梯度下降
如果你试图从山上下降到最低点,很多方式下的下降趋势并不明显!
其最佳方式是执行梯度下降:
- 在当前位置以最陡的下降梯度确定方向
- 在该方向上采取步长 X
- 重复 & 刷新;这就是训练过程
最小化成本函数是类似的,因为成本函数就像是起伏的山,我们想要找到其中的最低点,我们可以通过梯度下降类似地实现。
现在我们有了线性模型、成本函数和梯度下降的概念,可以开始使用 TensorFlow 了。
步骤二:在TensorFlow 中建立模型
1.TensorFlow 中的线性模型
TensorFlow 的2个基本组件是:
1)占位符(Placeholder):表示执行梯度下降时将实际数据值输入到模型中的一个入口点。例如房子面积 (x) 和房价 (y_)。
2)变量:表示我们试图寻找的能够使成本函数降到最小的「good」值的变量,例如 W 和 b。
然后 TensorFlow 中的线性模型 (y = W.x + b) 就是:
2.TensorFlow 中的成本函数
与将数据点的实际房价 (y_) 输入模型类似,我们创建一个占位符。
成本函数的最小方差就是:
3.数据