上一篇文章用5分钟搞懂了深度学习,它其实是机器学习的一种,而机器学习的目的是为了学会解决问题。
这里的机器实质上是一个计算机,所能解决的问题得是数学上的问题,因此生活中要解决的问题要转换为数学的问题。
定义出数学的问题后,那么,机器到底要怎么学习呢?
先看看人怎么学习的,我们上学时是看课本,听老师讲解,做题,然后核对答案,错了就改正,下次争取做对题。机器也是一样的。
目前主流的机器学习的方式是监督式学习。通过大量的数据和标签(类比试题和正确答案),让机器学习(类比做题),错则改正,对了就记住这样是对的。最终符合一定的准确率的标准后(类比考到90分以上),则认为这个机器已经学到了解决问题的函数了。
这里的监督的含义,即有人告诉他是对是错。
那么机器实质上是如何调整自身的呢?
这里要说明一下,机器从实际上看是一堆计算机硬件,但从抽象意义上看的由许多参数构成的数学模型。所以调整自身,即是调整这个模型和模型上的参数。
那么把数据输入这个数学模型后,就有对应的输出的结果。我们需要一个东西来衡量他的输出和正确答案之间的差距,这个函数就叫误差函数。
最终,学习的目的就转化为让这个误差最小,即优化模型最小化误差函数。
谈完了宏观上的机器学习,让我们细看机器学习的方法。
当前主流的学习方法是监督式学习,即用大量带标签的数据训练机器使得机器知道如何解决问题。
那么训练就得有效果,指导机器往好的方向学习,那么如何指导机器的学习方向?主流的方法用的是梯度下降的方式。梯度就是方向的意思,下降是往误差小的方向去(即好的方向)
机器从抽象意义上看的由许多参数构成的数学模型,数学模型可以认为就是一个函数。函数有输入和输出,为了让这个函数解决我们的问题,我们就得优化他,而优化则需要衡量他的输出和正确答案之间的误差,这个误差越小则说明我们的对问题解决的越好。
这里我们整理一下逻辑。
机器学习->优化模型->最小误差
知道了和正确之间的差距,就要缩小差距,缩小的方法就是对误差做的梯度下降。
既然机器在抽象意义上是个函数,我们用最简单的函数(只有一个参数)来说明问题,在二维平面把它的图画出来是这样的。
横坐标是函数的参数,纵坐标是误差。
请看横坐标函数的参数决定了误差,我们要让误差最小,则要找到对应的这个参数。
找的方法就是梯度下降。
步骤:
1. 刚开始时,我们的函数初始化后会随机在一个位置
2. 梯度下降就是求这个位置的梯度(方向)
2. 然后往误差小的方向挪动横坐标,从而得到新的位置。
不断重复2、3步这个过程,让函数的误差最小,或者只要小到满足的你预期即可。我们也就得到了这个最能解决问题的数学模型了,即这个就是训练好的机器了。
关于我:
linxinzhe,全栈工程师,目前供职于某500强通信企业。人工智能,区块链爱好者。
GitHub:https://github.com/linxinzhe
欢迎留言讨论,也欢迎关注我~
我也会关注你的哦!
网友评论