亚虎娱乐官网

初学TensorFlow机器学习:如何实现线性回归?(附练习题)

机器之心 2017-05-19
选自Technica Curiosa 作者:Nishant Shukla 机器之心编译 参加:Jane W
这篇文章的作者 Nishant Shukla 为加州大学洛杉矶分校的机器视觉研讨者,从事研讨机器人机器学习技术。Nishant Shukla 一直以来兼任 Microsoft、Facebook 和 Foursquare 的开发者,以及 SpaceX 的机器学习工程师。他仍是<>的作者。 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图一) 图 6. 不管哪个参数 w,最优的本钱函数值都是最小的。本钱函数的界说是实在值与模型呼应之间的差错的范数(norm,可所以 2 次方、绝对值、3 次方……)。终究,呼应值由模型的函数核算得出。 M 是一切或许的模型的调集。每选定一个 w 的值就会生成候选模型 M(w):y=wx。在 TensorFlow 中编写的回归算法将迭代收敛到十分好的模型参数 w。咱们称最好参数为 w*,最好拟合方程为 M(w*):y=w*x。 还记得你小学时学习的科学课程吗?或许就在不久前,谁知道呢——或许你正在上小学,可是掉包早早开端了你的机器学习之旅。不管是哪种方法,不管是生物、化学或许物理,一种剖析数据的常用技术是用绘图来调查一个变量的改动对其它变量的影响。 #F:设置权重变量 #K:循环遍历数据会集的每个数据 差错代表了操练集假定的可信度。太多的假定或许会难以泛化,所以也需求较小的差错值。 #L:更新模型参数以测验最小化本钱函数 线性回归 具体来说,模型的方差是衡量呼应的动摇程度有多大的一个规范,差错是呼应与实践数据相差的程度。终究,期望模型到达准确(低差错)和可重复(低方差)的作用。
操练 2:假定咱们的模型为 M(w):y=wx。假如权重 w 的值有必要为 0-9 之间的整数,则有多少个或许的函数? TensorFlow 入门级文章: 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图二) 怎么判别回归算法可行? 图 7. 本钱函数值是模型呼应与实在值之间的逐点区别的范数。 咱们期望找到与给定数据(便是输入/输出数据对)相一致的函数 f。意外的是,或许的函数的数量是无限的,所以咱们不能一个一个地测验。有太多的挑选一般并不是一件功德。需求鬼魅咱们要处理的一切函数的规模。例如,若咱们仅查找拟合数据的直线(不尖嘴薄舌曲线),则查找将变得愈加简单。
操练 1:将 10 个整数映射到 10 个整数的一切或许函数有多少?例如,令 f(x) 是输入变量取数字 0 到 9 且输出为数字 0 到 9 的函数。例如模仿其输入的恒等函数(identity function),如 f(0)=0,f(1)=1,依此类推。还存在多少其它的函数? #G:界说本钱函数 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图三) # B:运用 matplotlib 可视化数据 #O:制作初始数据 答案:10^10=10000000000 #I:设置会话并初始化一切变量 另一方面,不那么灵敏的模型可以十分好地归纳不知道的测验数据,可是在操练集上体现欠佳。这种状况称为欠拟合。一个过于灵敏的模型具有高方差和低差错,而一个不灵敏的模型具有低方差和高差错。抱负状况下,咱们想要一个具有低方差差错和低差错差错的模型。这么一来,它们就可以归纳不知道的数据并捕获数据的规律性。参见图 4 的比如。 列表 2:求解线性回归import tensorflow as tf  //#Aimport numpy as np  //#Aimport matplotlib.pyplot as plt   //#Alearning_rate = 0.01  //#Btraining_epochs = 100  //#Bx_train = np.linspace(-1, 1, 101)  //#Cy_train = 2 * x_train + np.random.randn(*x_train.shape) * 0.33  //#CX = tf.placeholder("float")  //#DY = tf.placeholder("float")  //#Ddef model(X, w):  //#E    return tf.multiply(X, w)w = tf.Variable(0.0, name="weights")  //#Fy_model = model(X, w)  //#Gcost = tf.square(Y-y_model)  //#Gtrain_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)  //#Hsess = tf.Session()  //#Iinit = tf.global_variables_initializer()  //#Isess.run(init)  //#Ifor epoch in range(training_epochs):  //#J   for (x, y) in zip(x_train, y_train):  //#K      sess.run(train_op, feed_dict={X: x, Y: y})  //#Lw_val = sess.run(w)  //#Msess.close() //#Nplt.scatter(x_train, y_train)  //#Oy_learned = x_train*w_val  //#Pplt.plot(x_train, y_learned, 'r')  //#Pplt.show()  //#P#A:载入 TensorFlow 包用于学习算法,载入 NumPy 包来设置初始数据,载入 matplotlib 包来可视化数据 图 8. 学习算法更新模型的参数以最小化给定的本钱函数。 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图四) 另一个比如,方程 y=3x 也是一条直线,除了具有更陡的斜率。你可以用任何实数更换该系数,这个系数称为 w,方程仍为一条直线:y=wx。图 1 显现了改动参数 w 怎么影响模型。咱们将这种方法生成的一切方程的调集表明为 M={ y=wx | w∈}。 # E:运用 matplotlib 的函数制作散点图 本质上,回归算法测验规划一个函数(让咱们将其称为 f),将输入映射到输出。函数的域是一个实数向量 d,其规模是实数集 。函数的输入可所以接连的或离散的。可是,输出有必要是接连的,如图 2 所示。 #E:将模型界说为 y=w*x #C:初始化线性模仿数据 原文连接:https://machinelearning.technicacuriosa.com/2017/04/22/machine-learning-with-tensorflow/ 假定咱们正在向房地产公司兜销房地产市场猜测算法。该算法在给定一些如卧室数量、公寓面积等房子特点后可以猜测房产的惨白。房地产公司可以运用房价信息轻松地赚取数百万美元,可是在采购算法之前他们需求一些算法可行的依据。 图 1. 参数 w 的不一样值代表不一样的线性方程。一切这些线性方程的调集构成线性模型 M。 一方面,过于灵敏的模型或许致使模型意外地记住操练集,而不是发现有用的形式特征。你可以幻想一个曲折的函数经过数据集的每个点而不发作过错。假如发作这种状况,咱们说学习算法对操练数据过拟合。在这种状况下,最好拟合曲线将极好地拟合操练数据;可是,当用测验集进行评价时,成果或许十分差劲(参见图 3)。 #M:得到终究参数值 这个调集表明「一切满意 y=wx 的方程,其间 w 是实数」。 顺便阐明,回归的猜测值为接连输出,但有时这是过度的。有时咱们只想猜测一个离散的输出,例如 0 或 1(0 和 1 之间不发作任何数值)。分类是一种更适合这类使命的技术。 如今你可以运用这些数据点测验拟合一条直线。在 TensorFlow 中,你最少需求为测验的每个候选参数打分。该打分一般称为本钱函数。本钱函数值越高,模型参数越差。例如,假如最好拟合直线为 y=2x,挑选参数值为 2.01 时应当有较低的本钱函数值,可是挑选参数值为 -1 时应当具有较高的本钱函数值。 #B:界说学习算法运用的一些常数,称为超参数 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图五) #J:屡次循环遍历数据集 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图六) 列表 1:可视化初始输入import numpy as np  //#Aimport matplotlib.pyplot as plt  //#Bx_train = np.linspace(-1, 1, 101)  //#Cy_train = 2 * x_train + np.random.randn(*x_train.shape) * 0.33  //#Dplt.scatter(x_train, y_train)  //#Eplt.show()  //#E# A:导入 NumPy 包,用来生成初始化的初始数据 这时,咱们的疑问就转化为最小化本钱函数值,如图 6 所示,TensorFlow 企图以有用的方法更新参数,并终究到达最好的或许值。每个更新一切参数的过程称为 epoch。 #D:将输入和输出节点设置为占位符,而实在数值将传入 x_train 和 y_train 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图七) 图 5. 散点图 y=x+ε,ε 为噪声。 为了评价机器学习模型,咱们将数据集分为两组:操练集和测验集。操练集用来学习模型,测验集用来评价功能。存在许多或许的权重参数,但咱们的方针是找到最适合数据的权重。用来衡量「最适合」的方法是界说本钱函数(cost function)。 # D:生成输出值,与输入值成正比并附加噪声 图 4. 数据欠拟合和过拟合的比如。 #N:封闭会话 衡量操练后的算法是不是成功有两个主要目标:方差(variance)和差错(bias)。 当一条线可以极好的拟合一些数据点时,咱们可以以为咱们的线性模型体现杰出。实践上,咱们可以测验许多或许的斜率,而不是固定挑选斜率值为 2。斜率为参数,发作的方程为模型。用机器学习术语来说,最好拟合曲线的方程来自于学习模型的参数。 更新列表 1 中的代码,见列表 2。该代码界说了本钱函数,并请求 TensorFlow 运转(梯度降低)优化来找到最好的模型参数。 图 3. 抱负状况下,最好拟合曲线一起适用于操练集和测验集。可是,假如看到测验集的体现比操练集十分好,那么咱们的模型有或许欠拟合。相反,假如在测验集上体现欠安,而对操练集体现杰出,那么咱们的模型是过拟合的。 #H:界说在学习算法的每次迭代中将被调用的操作 回归算法研讨的是怎么最好拟合归纳数据的曲线。它是有监督学习算法中最强壮和被研讨最多的一类算法。在回归中,咱们测验经过找到或许生成数据的曲线来了解数据。经过这么做,咱们为给定数据散点的散布因素找到了一种解说。最好拟合曲线给出了一个解说数据集是怎么生成的模型。 图 2. 回归算法是为了发作接连的输出。输入允许是离散的或接连的。这种区别是主要的,由于离散的输出值能更适合分类疑问,咱们将在下一章中谈论这个疑问。 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图八) 假定咱们的数据记录了表明在每瓶啤酒瓶上花多少钱。A 花了 2 美元 1 瓶,B 花了 4 美元 2 瓶,C 花了 6 美元 3 瓶。咱们期望找到一个方程,可以描绘啤酒的瓶数怎么影响总花费。例如,假如每瓶啤酒都花费 2 美元,则线性方程 y=2x 可以描绘采购特定数量啤酒的花费。 方差反映的是猜测值关于操练集的敏感度(动摇)。咱们期望在抱负状况下,操练集的挑选对成果影响很小——意味着需求较小的方差值。 答案:只要 10 种状况,即 { y=0,y=x,y=2x,...,y=9x }。 #P:制作最好拟合直线 想象你要制作降雨频率与农作物产值间的相关性图。你或许会调查到跟着降雨量的添加农业生产率也会添加。经过对这些数据拟合一条线,你可以猜测不一样降雨条件下的农业生产率。假如你可以从几个数据点发现隐式函数联系,那么你就可以运用此学习到的函数来猜测不知道数据的值。 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图九) 在本例中,本钱函数界说为差错的和(sum of errors)。一般用实践值 f(x) 与猜测值 M(w,x) 之间的平方差来核算猜测 x 的差错。因而,本钱函数值是实践值和猜测值之间的平方差之和,如图 7 所示。 基本概念 入门级解读:小白也能看懂的TensorFlow介绍 在这篇文章中,你将学习怎么用回归来处理一个实践疑问。你将看到,假如你想具有最强壮的猜测器,TensorFlow 东西将是准确的挑选。 假如你有东西,那么干什么工作都会很简单。我将演示第一个主要的机器学习东西——回归(regression),并给出准确的数学表达式。首要,你在回归中学习到的许多技术会协助你处理或许遇到的其它类型的疑问。读完这篇文章,回归将变成你的机器学习东西箱中的得力东西。 让咱们运用模仿数据来进行线性回归。创立一个名为 regression.py 的 Python 源文件,并依照列表 1 初始化数据。代码将发作类似于图 5 的输出。 # C:输入值为 -1 到 1 之间的 101 个均匀距离的数字 深度 | 机器学习敲门砖:任何人都能看懂的TensorFlow介绍 祝贺你运用 TensorFlow 处理了线性回归!别的,只需求对列表 2 稍加修正就能处理回归中的其它疑问。悉数流程尖嘴薄舌运用 TensorFlow 更新模型参数,如图 8 所示。 读者福利:本日起至 GMIS 2017 大会当天,读者在头条文章下留言,机器之心会在次日选出最专业或最有见地的一条谈论赠送 GMIS 2017 双日票一张! 检查悉数嘉宾阵型并报名参加机器之心 GMIS 2017,请点击「阅览原文」。 初学TensorFlow机器学习:怎么完成线性回归?(附操练题)(图一十)
关键字:

特约作者

推荐阅读 ^o^

只需2.5年  你的年薪将会令你惊叹!!! 只需2.5年 你的年薪将会令你惊叹!!!
『中國邊疆研究與歷史書寫』研討會日程安排 『中國邊疆研究與歷史書寫』研討會日程安排
过真伤己、过直伤人 过真伤己、过直伤人
中国人走得太远太快,灵魂跟不上了(深度好文) 中国人走得太远太快,灵魂跟不上了(深度好文)
他说第二,有人敢说第一吗? 他说第二,有人敢说第一吗?
微信扫一扫
分享到朋友圈
prve
为什么连周和泰这样的“评论狂魔”,都越来越少打开微信公号了? 上一篇
next
小米经典旗舰登顶 4月热门安卓机TOP10 下一篇
亚虎娱乐官网亚虎娱乐官网千亿国际娱乐官网齐乐娱乐
钱柜国际钱柜国际优发娱乐官网龙8娱乐老虎机手机版
钱柜国际亚虎娱乐官网千亿国际娱乐官网龙8娱乐城
亚虎娱乐官网亚虎娱乐手机版亚虎国际娱乐官网齐乐娱乐
钱柜国际钱柜国际优发娱乐官网龙8娱乐老虎机手机版