谈算法和狗

谈算法与狗

前言:先说段子。之前看到AlphaGo,很纳闷为啥要叫AlphaGo,以为Go是Google的缩写?后来才知道Go是围棋的英文,最早围棋是通过日本人传到西方的,而Go是日语的英语音译。文盲好可怕。

酱油

好像是骨子里生的,对国风的东西喜欢,书法,园林,篆刻,自然少不了围棋,只是从小没有被启蒙,后来工作过后有一段时间三分钟热买了一套好几百的云子,还买了一堆围棋书。但是基本都是酱油了。

人机大战

再就是这次人机大战,柯洁自然是现在公认世界第一,然后被AlphaGo完虐,虽然站在人类的角度看,好像在第二盘有那么一段时间占优,其余时间就是被碾压。于是我重新审视AI,因为毕竟是计算机系的学生,虽然对AI并不十分深入的了解,但多少知道计算机的架构和能做的事情,所以一直以来对AI并不看好。直到这次,看了三场直播,看到输了三场。于是重新去了解什么是基础的AI算法。

蒙特卡洛方法

如果要给任何一个人科普AI,我都会选择这个例子,因为我当时看就震惊了,因为完全是另外一种思维方法,而这个方法非常适合机器。
现在想一下,如果要你来求圆周率Pi,应该怎么求?

  • 从古到今,无非就是像祖冲之、刘徽割圆术,求内接正多边形的边长或者面积来求Pi。晚些时候的西方学者基本也就是这种通过正多边形的近似。

  • 再就是到17世纪,级数的发现,给求Pi提供了完全不一样的计算思路,就是代数求解。

    img

    于是Pi/4 = 1 - 1/3 + 1/5 - 1/7 + …

但想想上面这两个办法都是建立在数学方法之上的,如果通过计算机来计算,你需要告诉计算机一个复杂的计算方法和公式,而这就不是人工智能。

另外一个方法就是神奇的蒙特卡洛方法,其实之前有一个布丰投针问题,这就是蒙特卡洛方法的一种,虽然那个时候还没有被抽象为蒙特卡洛方法。

其实蒙特卡洛方法的执行很简单。在地上画一个1米半径的圆,再画一个与圆外切的正方形,然后抓上一把芝麻随机的洒落在正方形的区域之内,因为圆的面积公式为Pi*r^2,正方形面积为4*r^2,那么当我撒落的芝麻足够多,而且洒落地足够随机的时候,我只要去数最后落在圆内的芝麻的数量和洒落芝麻的总量就可以了,因为这个比值就是Pi/4。这样我就不用告诉计算机,面积怎么算,级数的公式是什么,而是直观的告诉它圆面积和正方形面积公式(这个很好得到),这样就可以很容易的得到Pi的数值。

这种计算方式相较于面积和级数的计算来说,对于计算机来说太简单了,因为随机和采样是cpu最擅长的,它反而不擅长各种加减乘除微分积分。这种随机加采样的方法是不是很像神经元对于人脑?

img

深度学习

神经网络

  • 价值网络
  • 策略网络
未完,没时间写,周末再说~~