解惑
小白和你都很纠结,升级为啥没有用呢?
你俩决定登门拜访一次“人工智能人话翻译官”。
翻译官家里的客厅中有一块巨大的白板,他就在这块白板前,开始了解惑的过程。
有的放矢
首先我们要明确一件事情,我们的模型怎么算好?
还记得在上一个章节中介绍
P,N 与P',N'之间的关系吗?
就是真是情况和预测值之间的关系。
还有更以前介绍的模型
输入 -> 模型 -> 输出 吗?
我们先把他们结合到一起。以上一章的恋爱数据为例,把数据灌进去就是。
我们一共有一百个人:
X 这个集合中就有(),代表第一个人,代表第二个人以此类推。有三个维度我们用一个向量代表。
=
我们用 代表财富,代表才华, 代表颜值。
=
Y' 代表输出
Y' 这个集合中就有(),代表第一个人是否配对成功的预测结果,代表第二个人是否配对成功的预测结果以此类推。Y'有两种可能,配对成功,或者配对失败。
Y 代表真实的情况
Y 这个集合中就有(),代表第一个人是否配对成功的真实情况,代表第二个人是否配对成功的真实情况以此类推。Y有两种可能,配对成功,或者配对失败。
最后他们的关系就是:
由此我们自然希望Y 与 Y'之间的差距越小越好,最好Y'就是Y。
再来看一下模型:
Y' = XW + threshold
还记得之前的这个W和threshold我们是怎么设置的吗?
=
是我们拍脑袋设置的!这就是造成我们模型不准确的最大原因。
我们接下来的目的就是如何让Y与Y'一致来展开,用数学公式表示就是
由于:
最终:
在这个公式中X已知,Y已知,不知道的是W和threshold。
学习能力
你的算法模型不是孩子了,他应该具备学习能力。
等等学习能力这东西太抽象了,它该如何体现在编程上呢?
学习是什么?
我们先来试着给"学习"下一个定义。为了不太抽象,我们回忆一下我们在小的时候是怎么认识苹果的。
你的父母绝对不可能这么对你讲:“苹果(学名:Malus pumila)是蔷薇科苹果亚科苹果属植物,其树为落叶乔木。”
一般的都是拿过来一个苹果,告诉你这是苹果,而你的直觉经验所得就是以后看见“红色的圆圆的,吃起来甜甜的”就是苹果,直到有一天你吃到了绿色的苹果,你会把之前的直觉经验改成“红色的或则绿色的圆圆的,吃起来甜甜的”就是苹果。以后看到类似的物体你就可以做出正确的判断了。
现在我们就可以给学习下一个定义了:人通过大量的观察,积累直觉经验,获得某项技能。
在刚才的故事中,你就是通过观察(视觉,味觉)大量的苹果,积累起来你的直觉经验(红色的或则绿色的圆圆的,吃起来甜甜的),最后获得判断物体是不是苹果的技能。
这个和之前我们讲过的输入->模型->输出吗?
把刚才的学习例子带入:
= 作为输入
大脑就是模型Y' = XW + threshold,(W与threshold就是大脑内部的神经元)
经过大脑处理得到 或者 这就是输出。
大脑是怎么做到的?
抛开生物学上的细节,其实我们的大脑就是通过两个动作的大量训练实现了学习,掌握了识别苹果的技能。
这两个动作就是前向计算与反向传播:
前向计算:你的大脑接收到X的输入,利用内置的模型,得到Y'。
Y' = XW + threshold(W与threshold就是大脑内部的神经元) 如果Y'为正答案就是"苹果",否则得到"不是苹果"。
反向传播:
根据最有Y’与Y的差距,如果预测错了,则修改大脑内的神经元也就是修改W与threshold。如果预测对了,则不修改大脑内的神经元。
这两个过程一直循环,直到我们的掌握了识别苹果的技能——比如拿过50个苹果,50和苹果相似但不是苹果的物体,根据你大脑训练我们能大概率(比如90%)的识别出来。这也就相当于你大脑中有了正确的。
这个过程像不像我们在上学时做的考前模拟?
接下来我们考虑的就是如何让计算机帮我们实现这个学习的过程。
也就是针对 求极值问题,求最优解问题。正好在计算机科学里面有现成的框架可以帮你和小白。
极值
本例中,我们希望Y越接近Y'越好,也就是越接近0越好——求极小值。
最优解
本例中,通过前向计算与反向传播不断调整 的 ,终于在某一时刻,你获得到一个能帮你获得极值的参数组合。它们就是最优解。
只有按照这个思路解决才是正道啊!
你和小白意识到之前的模型设计思路有问题,它不能自主学习啊!赶紧回去查阅相关的文档,让模型具备自我学习能力。
总结一下今天学到的名词:
学习
前向计算
反向传播
极值
最优解