机器学习入门案例简单理解

机器学习入门案例简单理解

 

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/diaoling1990/article/details/67670370

这两天仔细看了看机器学习的入门案例,一般程序的入门案例都是“hello world”;但是机器学习的比较特殊,是一个MNIST案例。

案例的具体操作不做为重点去写,主要是想记录一下自己对案例中的处理方法,处理思路的理解,对于我这个数学能力有限的小白入门来说,确实花费的功夫不小啊,赶紧记录下来,希望下次再回想时不用那么费力了。

效果

MNIST主要就是通过机器学习,教会电脑认识手写的1-9的数字,原理对于我来说比较复杂,看我慢慢道来。

如下图的数字: 
这里写图片描述 
通过机器学习后,电脑能认出来,并且准确率要90%以上

模型

其实上面的每一个数字都是如下图的 
这里写图片描述
一个28x28的一个像素点组成的,总共是28x28=784个像素点;

那么每一张图我们可以用像[0,0,0,…,0](总共784位)的一个向量,也就是一个矩阵来表示,每一个像素点用0-1的值来描述它的色值;简单的说如上图的一个数字图像,本来是28x28的一个像素集,我们把它每一行的点都往第一行后面追加,变成一个784x1的像素集(当然会有信息有所改变,这里先不计)。

总的来说,我们把一个数字图片用一个784维的向量x来表示了,我们再用一个变量y表示这个数字真正的值,y呢,是一个[0,0,0,0,0,0,0,0,0,0]这样的10维的向量,第几维的数字是1,这就代表是几,如[0,0,1,0,0,0,0,0,0,0]表示2。现在我们把x叫作自变量,y叫作因变量,x,y的关系简单的用一个函数来表示:

y = ax + b;
  • 1

因为y是一个1x10的矩阵,x是一个1x784的矩阵,那么可以通过矩阵的乘法,加法,得知,a是一个784x10的矩阵,b是一个1x10的矩阵。(忘记矩阵的自行复习一下)

到这里,我们就了解了,x代表一张手写数字的图,y代表手写图表示的数字,x,y用一个简单的函数 
y = ax + b; 
来表示了,我们只要通过大量的数据训练出a,b的值,就可以通过x知道y的值了,

至少,我是简单粗暴的就这样理解了。

评估值

接着上面的说,如果训练好了a,b,我们就能通过图片x,预测我们的图片所代表的数值y了,我们假设y'是这个图片实际代表的值,y是我们通过图片x预测的其所代表的值,我们在来一个函数

z = y' * log(y)
  • 1

其中z代表了 交叉熵,粗暴的理解,z就是代表了我们我们的预测值y,和实际值y'之间的差距,可想而知,我们希望z越小越好。

接下来TensorFlow就该出场了,

 tf.train.GradientDescentOptimizer(0.01).minimize(z)
  • 1

TensorFlow提供了一套牛逼反向传播算法,具体我也不清楚,反正很快,很准;可以每次让z小一点,然后记录a,b的值。通过多个数据的训练,让y=ax+b越来越准。

至于到底准不准,TensorFlow也提供了方法去检测。我不涉及啥理解的,我就不说了。

以上就是我对MNIST的一个原理的理解了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值