taoyingyong2014的个人博客分享 http://blog.sciencenet.cn/u/taoyingyong2014

博文

Geoffrey Hinton获得2018年的图灵奖 精选

已有 9694 次阅读 2019-3-28 01:47 |系统分类:海外观察

20193月27日,美国计算机协会(ACM)宣布把2018年的图灵奖(Turing Award)颁给深度学习的三位先驱Geoffrey HintonYoshua BengioYann LeCun,以表彰他们为当前人工智能的发展所做出的贡献。

神经网络是最古老的人工智能方法之一,大概于20世纪50年代建立,但由于受限于当时技术与算力的瓶颈,神经网络并未得到学术界和工程界足够的重视。经过数十年的潜心研究,他们将这种近乎边缘化的想法,变成了计算机科学中最热门的想法。他们所倡导的技术,已经成为谷歌、微软、苹果、百度、阿里、腾讯等每个大型科技公司未来战略的核心。

ACM的公告中(见ACM官网),Geoffrey Hinton之所以得奖主要源自他1986年发明的反向传播算法1983年的玻尔兹曼机



                  Geoffrey Hinton


从去年开始,笔者一直关注学习Geoffrey Hinton的工作,特别是玻尔兹曼机(见:“自指”玻尔兹曼机:纪念迟来的应用)。总的来说,反向传播算法是一种调参算法,但玻尔兹曼机的意义却不限于算法,其中或许隐藏着巨大的宝藏。一般的玻尔兹曼机很难进行具体的现实计算,主要原因在于收敛速度太慢。因此目前主要使用玻尔兹曼机的简化版——受限玻尔兹曼机。类似于生物的感知反馈系统,受限玻尔兹曼机由可见神经元构成的可见层(感知系统)与隐神经元构成的隐含层(反馈系统)所组成,见图1。将多个这种类生物的结构进行重叠就形成了深度神经网络的雏形。



                图1:受限玻尔兹曼机


受限玻尔兹曼机可以用“对比散度算法”进行近似计算,收敛速度很快,因此效果非常不错。国内有很多受限玻尔兹曼机的算法介绍(例如:一起读懂传说中的经典:受限玻尔兹曼机),但是附上的程序无一例外(就笔者目前所见)都是直接复制粘其它(国外)站上的,很多的细节非常不清楚,最关键的是还运行不了。

后来,笔者不得不亲自动手编写受限玻尔兹曼机的程序(请原谅我不是计算机专业),主要是进行样式识别。今天是Geoffrey Hinton因为玻尔兹曼机得图灵奖的特殊日子,因此分享一个之前编的受限玻尔兹曼机程序出来,算是庆贺玻尔兹曼机得奖。

 

Matlab程序(识别数字10

01黑白像素


******


 

R=[1,0,1,1,1;1,0,1,0,1;1,0,1,0,1;1,0,1,0,1;1,0,1,1,1];

 

for i=1:5

v(i)=R(i,1);

v(5+i)=R(i,2);

v(10+i)=R(i,3);

v(15+i)=R(i,4);

v(20+i)=R(i,5);

end

 

w=normrnd(0,0.01,25,10);

b=zeros(25,1);

c=zeros(10,1);

alph=0.1;

 

epoch=1000;

for k=1:epoch

 

m=v*w;

for j=1:10

p_h_v(j)=1/(1+exp(-c(j)-m(j)));

end

 

for j=1:10

if p_h_v(j)>rand

h(j)=1;

else

h(j)=0;

end

end

 

n=w*h';

for i=1:25

p_v_h(i)=1/(1+exp(-b(i)-n(i)));

end

 

for i=1:25

if p_v_h(i)>rand

v1(i)=1;

else

v1(i)=0;

end

end

 

m1=v1*w;

for j=1:10

p_h_v1(j)=1/(1+exp(-c(j)-m1(j)));

end

 

for i=1:10

for j=1:25

L(i,j)= p_h_v(i)*v(j)-p_h_v1(i)*v1(j);

end

end

 

H=v-v1;

W=p_h_v-p_h_v1;

 

w=w+alph*L';

b=b+alph*H';

c=c+alph*W';

 

end

 

n=w*h';

for i=1:25

p_v_h(i)=1/(1+exp(-b(i)-n(i)));

end

 

for i=1:25

if p_v_h(i)>rand

v2(i)=1;

else

v2(i)=0;

end

end

 

for i=1:5

R2(i,1)=v2(i);

R2(i,2)=v2(5+i);

R2(i,3)=v2(10+i);

R2(i,4)=v2(15+i);

R2(i,5)=v2(20+i);

end

 

R,

R2


******

 

                    图2:数字10重构


其中可见神经元25个,隐神经元10个。这个数字识别的程序简单易懂,受限玻尔兹曼机的核心精神也全部体现了,希望对于想深入学习受限玻尔兹曼机的朋友有所帮助。其中最关键的地方在于,最后一次吉布斯采样的隐神经元的取值可以是01的值,这与一开始取01不同。

 

真正深入的学习和应用神经网络之后,才明白目前的人工神经网络产业的泡沫很大,人工调参的背后是机理的不了解。如果不能为深度学习的方法建立一个原则性的基础,泡沫之后必然是新一轮的瓶颈。玻尔兹曼机是一种理论基础比较完备的神经网络,它能获得今年的图灵奖确实是实至名归。希望玻尔兹曼机的得奖能够吸引更多的朋友关注这个非常有潜力的领域。

期待不久的将来,玻尔兹曼机能够取得更大的突破!


 



https://blog.sciencenet.cn/blog-1253715-1170038.html

上一篇:从欣赏自己的工作中获得快乐
下一篇:量子场论中重整化的意义:与温伯格达成一致
收藏 IP: 195.176.113.*| 热度|

8 强涛 黄永义 姬扬 张江敏 陈有鑑 杨金波 zjzhaokeqin shenlu

该博文允许注册用户评论 请点击登录 评论 (8 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-11-23 16:24

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部