从换位思考到机器学习


前些日子,同事Z在打印的时候,发现打印机没开,由于打印机后面有一个开关,如Fig. 1原点位置,我需要向他描述这个开关的位置,这牵扯到坐标系转换的问题;简单化之后则可以看成是参照物的问题,我在第一次描述中,说开关在打印机的左下角,因为Z所在的位置在y方向,所以它对左下角(原点)这个位置认识会有偏差,同时打印机所占的空间比较大,导致他并不能立刻意识到这个开关在哪儿;于是我改变参照物,说开关在电源线的上面,他立刻就找到了,并把打印机打开,顺利进行了打印。然后我开始反思,为什么我的第一次描述让他无所适从,而第二次描述却让他如鱼得水;直接原因为参照物所占空间的问题,也是个特征的问题,换句话说,参照物越大,特征越模糊,你依据此参照物标定的目标越不容易检出;反之,参照物越小,越具有区别于其周围环境的特征,那么目标就越容易定位,人就越容易发现它。

于是乎,将此问题引申,将上述的换位思考和特征提取问题,联想到机器学习的问题。目前我们所关注的机器学习领域,其实一直都是在模仿人的学习和思考。但是人具有高度复杂的神经网络,而目前的电脑与之相比显然具有较大的差距。举一个简单的例子,我们想知道牛圈中有多少只奶牛,对于我们来说这很容易,我们先天性对一些温顺的动物比较有好感,同时在我们很小的时候,每当遇到一种动物,妈妈总会告诉我们这是某某动物,某一天,突然看到有农户在倒牛奶,于是我们知道原来从我们出生那天开始喝的东西就是这家农户所养个那些叫奶牛的动物产的,于是我们知道了奶牛这种动物,并记住了它的特征,比如它们有四条腿,它们吃草,它们是黑腿百花的,它们会哞哞的叫等;现在我们想知道牛圈里有多少只奶牛,我们只需要对牛圈里符合我们对奶牛所认知的特征进行定位并点数就可以了,奥,牛圈里一共有100只奶牛;

现在技术发达了,养牛场老板嫌每天去牛圈点数太麻烦,于是他经朋友介绍,买了大恒图像产的新一代Gige相机,该款相机质优价廉,具有诸如高感光低噪声,配置简单,数据传输距离远等优势,老板只需要在办公室椅子上一坐,打开监控软件,即可直达奶牛饲养现场,无丝竹之乱耳,无案牍之劳形;但是问题来了,相机只能对养牛现场进行监控,也只能看到现场的图像而已,没有解决老板的问题,老板很生气,对朋友说,我买这么牛X的相机,花这么多钱,以前我是去牛圈数数,现在是在电脑旁数数,你能不能更智能一点,让电脑帮我数数,然后直接告诉我有多少只牛;朋友说了,这个好办,大恒有个算法组专干这个,人家不仅能做到帮你数数,还能告诉你每天这只奶牛跑了多少公里,吃了多少草料,产了多少牛奶,甚至于更神的是哪只母牛生病了,哪两只牛比较暧昧,哪些牛搞团团伙伙,都能通过电脑反应给你;老板大腿一拍,这个好,你就让他们搞,先把问题解决,钱管够。

那么问题来了,根据我们数牛的经验,需要让电脑先知道什么是奶牛。什么是奶牛哪?它具有以下特征:它有四条腿,皮肤多为黑底白花,有角,头部偏平,两只眼睛,鼻子较长,行走速度较慢等等;怎么在相机所采集的图像中将奶牛检出呢?这就用到了机器学习的知识,首先是特征的学习,根据上述特征,将他们采用数学矢量进行抽象,首先要采集大量的各种各样的奶牛图片,这叫正样本,电脑训练完了这些正样本,还要告诉它我这还有一些其它动物,比如马,驴,骡子,大猩猩,河马,猪头,美女等等,这些可不是奶牛,它们叫负样本,等电脑统统认识了它们,于是电脑知道了什么是牛,什么是其它,那就开始给老板干活吧。

第一个需求,老板想知道牛圈里有多少只奶牛,电脑根据先前对奶牛的认知,开始在相机图像上寻找,最后找到奶牛是101只,老板说不对,你把那个饲养员当成牛了,于是老板进行人工干预,将那个错检的人给咔嚓掉,电脑开始继续学习,奥,像这种跟母牛走的比较近的虽然有四肢但是只有两条腿着地的不是牛,学习完之后再统计,现在对了,本圈一共有奶牛100只;第一个需求搞定了;

紧接着老板想知道某只牛一天运动了多少距离,这就用到了多目标跟踪方面的知识,而且由于这些奶牛运动的无序性,它还是一个非线性机动多目标跟踪问题,当然技术问题都不是问题,考虑到遮挡,需要对牛的下一个运动位置进行预测,并对牛的运动轨迹进行数据关联;同时还需要知道地面距离在相机视野中的映射公式,就是相机的一个像素的长度相当于地面上多长的距离,咱们假设这些都是已知的,于是我们根据统计得到的某只牛在这一天中大概走了多少个像素点,然后映射一下,奥,这只年轻有为的帅牛走了10Km,不错,老板很高兴,第二个问题顺利解决了;

但是老板的那位朋友说了,大恒的相机还能知道某些牛之间的关系。老板以为他的那位朋友为了鼓动他买相机是在吹牛,于是故意难为他,那你给我讲一下今天哪两只牛打架了,哪些牛打群架了?这个问题似乎无法着手,但是任何问题都难不倒英雄的大恒人:这个问题其实是一个智能监控中比较经典的目标异常行为分析的问题,那么怎么判断两只牛或者多只牛在打架(异常产生)呢?我们可以转换思维,从高一的牛顿运动定律着手,每只牛的目标一旦确定,那么赋予在它身上的参数即可统计出来,包括自速度,自加速度,位移,方向性,质量,运行轨迹,相对速度,相对加速度等,我们根据牛与牛之间相对特征如相对速度,轨迹交集等,并根据我们前期训练的一些经验参数,如两只牛之间的相对速度超过多少时我们即认为他们在打架?通过一些先验知识,我们也可以圆满的解决这个问题,老板一听,此可行!

同时基于产出比的考虑,老板想知道每只牛每天吃了多少草,产了多少奶。这个问题就比较好解决了,如果给每只牛都配备一个传感器,显然成本太高,那么我们可以只使用一个传感器即可,把它设置在奶牛出入的必经之路上,当奶牛通过时,根据我们先前跟踪后给每只奶牛添加的标签,即可根据传感器回传的体重数据,确定奶牛的体重,于是老板的问题顺利解决了。

奶牛场的老板和所有其它使用我们大恒相机的老板一样,他们并不需要知道我们是怎么做的,他们只需要知道他的问题我们是否可以解决即可,显然,我们的答案是肯定的。

解决了奶牛场的问题,我们还需要转入下一个问题的研究:就是你发现,我们需要先知道什么是奶牛,然后才能更好地对奶牛进行学习。这是一个已知先验概率问题,先验概率是在缺乏某个事实的情况下描述一个变量;而后验概率是在考虑了一个事实之后的条件概率。先验概率通常是经验丰富的专家的纯主观的估计,这就好比我知道你喜欢我,我根据以往咱俩初始交流的经验先验地知道你对我有意思,我俩能在一起的概率;后验概率则是最后咱俩在一块了,问你之前我知道你喜欢我的概率。比如做一个抛硬币的实验,我们引出信息不对称问题[1]

我在一间屋子里做“抛硬币”的试验,我“一不小心”连续抛出了100次正面,这里请你不要怀疑硬币质地的均匀和我抛法的不公正,这时,你推门进了实验室,我和你打赌,下次抛硬币会出现反面,给你很高的赌注。因为我知道我已经抛了100次正面,在这个过程中正反面出现的概率是要往1:1均衡的。但是我不会告诉你,我已经连续抛了100次正面。你当然认为正反面出现的概率是1:1,而且你的理论依据也是正确的。但是,你的正确的理论可能会使你输钱的。研究这个问题,我是想提出两个问题:其一,正确的理论可能得不出正确的结果,其二,信息的不对称问题[2]

我们着重说明信息不对称问题,[[3]]中举了一个猜歌曲的游戏,就是我打拍子,你猜这首歌曲的名字,因为我知道答案,所以我认为这个很简单,你应该能猜到,但是结果是我的期望和实际差距太大,哪怕是很简单的曲子,你却根本猜不出来。为什么会是这样呢?这是一个知识的陷阱,我知道答案,我掌握的信息就多,结果对我来说是显然的,我认为它很容易,但是我并不能体会到你不知道答案的感觉,所以我的期望和你的回答会有非常大的误差;造成这个误差的原因是多方面的,无外乎知识面,学习背景,价值系统,习惯,观念,道德观等。

这就好比你猜你一个女孩子喜欢什么,或者这个女孩子故意让你猜她到底喜欢什么。在信息不对称的情况下,这种猜测的正确率是非常低的,但是你发现,通过一次次的试错和不断的交往之后,你猜测的正确率就会陡然增加。不过有一些东西还是有先验概率的,比如女孩子喜欢iPhone 6 Plus,喜欢特大号SUV,喜欢唱歌等,有些女孩子喜欢日本漫画,这都是大概率事件,一般情况下,你横竖不会想到一些小概率事件,如喜欢吃特大碗苏氏牛肉面。

总之,无论对于机器还是人而言,学习永远都是一个渐进积累的过程,只有不断通过样本训练,才能更好地维持算法的鲁棒性,从错误中吸取经验,去胜利中汲取教训,是我们迭代前进的动力所在。


[2] http://mindhacks.cn/2008/09/21/the-magical-bayesian-method/

[3]http://mindhacks.cn/2012/06/04/escape-from-your-shawshank-part5-the-invisible-cage/

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值