人工智能基础之机器学习入门实战

2019-10-18 07:49

机器学习,简单来讲,就是给定机器一个输入,获得机器的一个输出。类似于构建一个映射函数。例如:f=猫。如何通过一张图片的输入,机器就可以识别出来是什么内容,就需要学习模型的建立。常见的机器学习模型有三类:监督学习、无监督学习和强化学习。简单理解:监督学习:我们在给机器的学习样本中,同时也包含了答案,目的是为了让机器通过学习标准输入和标准答案之间的联系,从而对于我们给机器的其他输入,使机器为我们提供更为标准的答案。无监督学习:我们在机器的一组数据,不告诉机器有关数据的任何正确答案。让机器自己去找规律。例如:可以使机器自己利用输入的数据,将数据聚类。强化学习:我们不仅要给机器提供正确的数据,还要告诉机器哪些数据是错的。类似于“在犯错中成长”。 3、机器学习入门

生产活动离不开生产工具的使用。机器学习也一样。对于机器学习而言,我们需要做的就是选择适合自己的机器学习框架。目前机器学习框架有很多,例如:TensorFlow、Chainer、CNTK、Keras 等。本文选择使用TensorFlow。主要是TensorFlow目前相对比较流行,版本更新相对也快,可以满足不断发展的机器学习需要。软件环境使用的是Anaconda3。Anaconda3中不但包含Python开发环境,还提供了很多Python需要使用的常用函数库,并且在各种资源包管理上,也比较方便。环境的搭建,网上的案例太多了,在此就不多讲了。 3.2 数据流图

接下来,我们要显示TensorFlow的TensorBoard,以便于进行更加直观的数据流图显示。在程序中加入以下代码:writer = tf.summary.FileWriter打开命令提示窗口。如果是Anaconda3的环境,直接在程序菜单中,进入软件自带的“Anaconda Prompt”就可以。输入 tensorboard --logdir "D:/MyPython"文件目录可以自行根据自己的文件进行修改。不一定要按文中的文件名称。要注意的是工作路径要与Python代码的路径一致。成功启动TensorBoard,系统会默认分配一个端口号为6006的网址。打开浏览器,输入“http://localhost:6006/”就可以显示出TensorBoard面版。有的机器,并不是localhsot,而机器名称加端口6006,我们在命令行中启动TensorBoard后,TensorBoard会告诉你一个实际的访问地址。启动后的TensorBoard如下图所示。

我们使用的是TensorFlow作为机器学习的工具,TensorFlow的接口非常多。大家有兴趣可以到TensorFlow的官方网站上查阅。在这里出于本文实战需要,为了方便大家更好理解,将本文用到的几个API进行简单说明。 tf.matmul             矩阵

tf.reduce_mean  均值

4、机器学习实战

学习的数据比较简单,我们假设定义一个公式 y=ax+b。这个公式我们知道,而机器不知道。通过给机器输入和这个公式相关的学习数据,来让机器自己学习这个公式,从而使我们给机器一个x值,机器可以告诉我们y值。我们以公式  y=2x+3,生成学习数据。

我们可以把绝对值变为平方,那么这个误差可以表示为:

这时候,我们大学时学的高等数学就派上用场了。求极值,其实就是使公式中变量的偏导数为零,即:

我们要求的最小值,就是这个曲线底部的这个值。不论我们目前计算的起始值在这个曲线的哪个位置,只要是能到曲线底部就可以了。是不是有种阶度的感觉?而这个过程,就是机器学习中常说的一个术语——梯度下降。 4.2 案例实战

ax=fig.add_subplot

建立线性模型:y=W·X+b,随机初始化W和b x = tf.placeholder

weights = tf.Variable))

y_pred = tf.matmul + bias

train = optimizer.minimize

sess.run

sess.run,feed_dict={x:xi,y_true:yi})

正如本文之前所说的,现实中的数据不可能是完全线性的。我们把yi的值,进行一些调整,变成不是完全线性,我们看一下机器学习的结果。即:yi =[[5.7,], [5.4,], [6.9,], [7,], [8,], [7.2,], [9.99,], [11.01,], [13.65,], [12.99,]]结果如下图所示,预测结果是59.12093735。我们相信,如果样本的数据量足够大,最后的结果仍然会更加接近真实值。

为了方便大家代码调试,这里直接把代码发在这里。

5、结语

作者:王佳亮,中国计算机学会会员。微信公众号:佳佳原创

扫描二维码分享到微信

在线咨询
联系电话