介绍:
《人工智能原理课程设计》课程设计
1. 内容及要求
在以下3个选择一个作为课程设计内容:
1)产生式系统实验
A) 系统设置,包括系统名称和系统谓词,给出谓词名及其含义。
B) 编辑知识库,通过输入规则或修改规则等,建立规则库。
C) 建立事实库(综合数据库),输入多条事实或结论。
D) 运行推理,包括正向推理和反向推理,给出相应的推理过程、事实区和规则区。
2)A*算法求解迷宫寻路问题
A) 画出用 A*算法求解迷宫最短路径的流程图。
B) 设置不同的地图,以及不同的初始状态和目标状态,记录 A*算法的求解结果,包括最短路径、扩展节点数、生成节点数和算法运行时间。
C) 对于相同的初始状态和目标状态,设计不同的启发式函数,比较不同启发式函数对迷宫寻路速度的提升效果,包括扩展节点数、生成节点数和算法运行时间。
3)采用卷积神经网络分类MINIST数据集
A) 从网上下载MINIST数据集,训练所编写的网络,要求记录每次迭代的损失值;
B) 改变卷积神经网络卷积层和池化层数,观察分类准确率。思考网络层数的多少对分类准确率的影响;
C) 改变卷积神经网络的卷积核大小,观察分类准确率。思考卷积核大小对分类准确率的影响。
智能温度采集和显示系统课程设计
温度测量经过二次仪表 现在一般的二次仪表都带有通讯接口(而且是485接口,比你要的还好些哦)。电缆用带屏蔽线的就差不多了
CCCF专栏 | 智能计算系统——一门人工智能专业的系统课程
我国人工智能底层研究能力缺失的现象严重,最根本的原因在于这方面人才教育培养的缺失。2018年中,作者陈云霁在中国科学院大学开设了一门“智能计算系统”课程。这门课程受到了学生的欢迎,有很多选不上课的学生跟着旁听了整个学期。
关键词:智能计算系统 人工智能 专业课程
编者按 :5年前,本文作者陈云霁受邀在CCCF专栏上发表了一篇题为《体系结构研究者的人工智能之梦》 1 的文章,第一次公开介绍他从通用处理器转向深度学习处理器方向的心路历程(那篇文章后来也被收录进了《CCCF优秀文章精选》)。经过5年的努力,陈云霁在深度学习处理器方向作出了国际公认的贡献:他的学术论文被顶级会议ISCA’18超过四分之一的论文引用,他的技术成果被应用到华为、曙光、阿里等近亿台智能手机和服务器中。他因此被Science杂志评价为智能芯片的“先驱”和“领导者”。现在,当深度学习处理器已经成为学术界和工业界的热点时,陈云霁再次转身,迈向人工智能系统课程教学的新舞台。这篇文章将和大家分享他走向这个新舞台的心路历程。
智能计算系统课程的开设
我是一名中国科学院计算技术研究所的青年科研人员,主要从事计算机系统结构和人工智能交叉方向的基础研究。看到本文的标题和作者单位,大家可能会觉得有一点奇怪:作者和人工智能专业课程有什么关系?因为传统意义上,上课是高校教师的职责,中国科学院的员工除非是自愿担任了中国科学院大学(国科大)的岗位教授,否则并没有上课的义务。
驱使我主动思考人工智能专业课程设计的最主要的原因,是这样一个众所周知的现象:越是人工智能上层(算法层、应用层,见图1)的研究,我国研究者对世界作出的贡献越多;越是底层(系统层、芯片层),我国研究者的贡献越少。在各种ImageNet比赛中,我国很多机构的算法模型已经呈现“霸榜”的趋势,可以说代表了世界前沿水平。但这些算法模型绝大部分都是在CUDA 2 编程语言、Tensorflow编程框架以及GPU之上开发的。在这些底层“硬 科技 ”中,我国研究者对世界的贡献就相对少了很多。底层研究能力的缺失不仅会给我国人工智能基础研究拖后腿,更重要的是,将使得我国智能产业成为一个空中楼阁,走上信息产业受核心芯片和操作系统制约的老路。
图1 人工智能研究大致层次
我国人工智能底层研究能力缺失的原因很多,我认为最根本的原因在于这方面的人才教育培养的缺失。没有肥沃的土壤,就长不出参天大树。没有具备系统思维的人工智能专业学生,我国就难以出现杰夫·迪恩(Jeff Dean)这样的智能计算系统大师,也不会产生有国际竞争力的智能系统产品。因此,在人工智能专业学生的培养上,我们应当主动作为去改变局面。
2018年我国有35个高校设立了人工智能本科专业,这是重新思考和梳理人工智能培养体系的一次重大机遇。就我目前的了解,大部分高校在考虑人工智能课程体系时,采用的是纯算法、纯应用的教学思路。这样培养出来的学生,仍然是偏向上层应用开发,对智能计算系统缺乏融会贯通的理解。
事实上,各个高校不乏有识之士,在课程设计上绕开系统课程往往受制于三大客观困难:一是国内还没有太多人工智能系统类的课程可供参考,二是国内缺乏人工智能系统类课程的师资,三是国际上缺乏人工智能系统课程的教材。
基于自己的研究背景,我对人工智能的算法和系统都有一些粗浅的涉猎。我是否能为解决人工智能系统课程、师资、教材上的困难作一点微薄的贡献?是否可以身体力行地培养一些具备系统思维和能力的人工智能专业学生呢?
因此,2018年中,我向中国科学院大学申请开设一门人工智能专业的系统课程,名为“智能计算系统”(曾名“智能计算机”),希望能培养学生对智能计算完整软硬件技术栈(包括基础智能算法、智能计算编程框架、智能计算编程语言、智能芯片体系结构等)融会贯通的理解。这门课程受到了学生的欢迎,有很多选不上课的学生跟着旁听了整个学期。让我尤其感动的是,有其他研究所的学生慕名自发地从中关村跑到怀柔来听课,上一次课来回车程就要三个小时,回到中关村都是深夜。这也许能说明这门课对学生来说有一定吸引力,大家在听课中有真正的收获。
人工智能专业学生培养和课程体系
人工智能专业的课程体系设计应该服务于学生培养目标。那么高校人工智能专业应该培养什么样的学生?
这个问题可能还没有统一的答案。对比和人工智能专业非常接近的计算机专业,高校的计算机专业培养的显然不是计算机的使用者,而是计算机整机或者子系统的研究者、设计者和制造者。
我国计算机专业的前辈在六十多年前开始设立计算机专业时,就高瞻远瞩地设计了一个软硬结合的方案来培养计算机整机或者子系统的研究者、设计者和制造者。这套方案经过六十年的演进,依然基本保持了当年的初衷。今天,各个高校的计算机专业,基本都开设了计算机组成原理、操作系统、编译原理、计算机体系结构等系统类的必修课程(见图2)。也就是说,虽然计算机专业的学生毕业后大多从事软件开发工作,但是他们对计算机硬件系统还是有基础的了解的。
图2 网易云课堂上的计算机专业培养方案 3
人工智能专业学生的培养目标应当是人工智能系统或者子系统的研究者、设计者和制造者。只有实现这个目标,高校培养的人才才能源源不断地全面支撑我国人工智能的产业和研究。为了实现这个目标,人工智能专业的课程设计应当包括软硬两条线(就像计算机专业)。如果人工智能专业只开设机器学习算法、视听觉应用等课程,那充其量只能算是“人工智能应用专业”或者“人工智能算法专业”。毕竟算法只是冰山露出水面的一角,冰山底下90%还是硬件和系统。
就拿拥有世界上最大的AI算法研究团队的公司谷歌来说,谷歌董事长约翰·轩尼诗(John Hennessy)是计算机体系结构科学家,图灵奖得主;谷歌AI的总负责人杰夫·迪恩(Jeff Dean)是计算机系统研究者;谷歌AI最令人瞩目的三个进展(Tensorflow, AlphaGo, TPU)都是系统,而不仅仅是某个特定算法,算法只是系统的一个环节。因此,从人工智能国际学术主流来看,系统的重要性是不亚于算法的。
只学过算法的学生或许对于调模型参数很在行,但是对一个算法的耗时、耗电毫无感觉。这样的学生不具备把一个算法在工业系统上应用起来的基本功(因为一个算法真正要用起来必须满足延迟和能耗的限制)。
只有加入了系统线的课程,学生才能真正理解人工智能是怎样工作的,包括一个人工智能算法到底如何调用编程框架,编程框架又是怎么和操作系统打交道,编程框架里的算子又是怎样一步步在芯片上运行起来。这样的学生能亲手构建出复杂的系统或者子系统,在科研上会有更大的潜力,在产业里也会有更强的竞争力。正如业界所云:“会用Tensorflow每年赚30万人民币,会设计Tensorflow每年赚30万美元。”
有很多老师和我说:“人工智能专业确实应当有一些系统类的课程。但国内从来没有开过这样的课,也没有合适的教材,我们学院也缺乏相应的老师来教这样的课程。”这是很实际的三个客观困难,但不应当影响我们对人工智能专业的课程设计。
从学生角度讲,人工智能专业开设什么课程,应该是看国家和企业需要学生会什么,而不完全是看老师现在会什么。六十年前,我国没有几个人见过计算机,更别说开课了。但为了两弹一星等科学和工程计算任务,我国依然成立了中科院计算所,并在计算所办计算机教师培训班,在清华大学、中国科学技术大学等高校(此处恕不能一一列全)开设计算机专业,这才有了今天我国巨大的计算机产业。
从教师角度讲,人工智能的系统研究已经成为国际学术热点,讲授这类课程是一个教学相长的过程,能帮助教师走到国际学术前沿。今年美国计算机方向Top4高校(斯坦福大学、卡耐基梅隆大学、加州大学伯克利分校和麻省理工学院)以及其他多个国际单位的研究者联合发布了一份名为“Machine Learning System(机器学习系统)”的白皮书。在这样的新兴热门方向布局培育一批青年教师,无疑对提升所在高校乃至我国在人工智能学术界的影响力有巨大帮助。
因此,不论是对于人工智能专业的学生还是教师来说,把系统类课程开起来,都是有必要,也是有实际意义的。
什么是智能计算系统
简单来说,智能计算系统就是人工智能的物质载体。现阶段的智能计算系统通常是集成通用CPU和智能芯片(英伟达GPU或寒武纪MLU等)的异构系统,并向开发者提供智能计算编程框架和编程语言等。之所以要在通用CPU之外加上智能芯片,主要是因为通用CPU难以满足人工智能计算不断增长的速度和能耗需求。例如,2012年谷歌大脑用了1.6万个CPU核运行了数天来训练怎么识别猫脸,这对于工业应用来说是很难接受的。显然,要想真正把人工智能技术用起来,必须使用异构的智能计算系统。而为了降低异构智能计算系统的编程难度,就需要有面向智能计算的编程框架和编程语言。
事实上,智能计算系统已经以种种形态广泛渗透到我们的生活中了。IBM的超级计算机Summit用机器学习方法做天气预报,BAT的数据中心上运行着大量的广告推荐任务,华为的手机上集成寒武纪深度学习处理器来处理图像分析和语音识别,特斯拉的自动驾驶系统……都可以看成是智能计算系统。在智能时代,中国乃至全世界都需要大批的智能计算系统的开发者、设计者、应用者。
智能计算系统的发展并不是一蹴而就的事情。20世纪80年代面向符号主义智能处理的专用计算机(Prolog机和LISP机)可以被看成是第一代智能计算系统。但是当时人工智能缺乏实际应用,算法也不成熟,而且当时摩尔定律还处于飞速发展阶段,专用计算机相对每18个月性能就能翻番的通用CPU并没有太大优势。因此,第一代智能计算系统逐渐退出了 历史 舞台。
“智能计算系统”课程重点关注的是第二代智能计算系统,主要是面向深度学习等机器学习任务的计算机。相对于30年前的第一代智能计算系统,当今的第二代深度学习智能计算系统可谓是碰到了天时地利人和。当前图像识别、语音识别、自然语言理解、 游戏 、广告推荐等人工智能应用已开始落地,深度学习算法发展速度令人应接不暇。尤其重要的是,通用CPU性能发展已经趋停,要支撑不断发展的深度学习算法,必须要靠智能计算系统。因此,深度学习智能计算系统会在很长一个阶段里都是学术界和产业界关注的焦点。“智能计算系统”课程将能帮助学生深刻理解深度学习智能计算系统。
第二代智能计算系统主要支持深度学习等机器学习任务。未来如果人类真的要在通用人工智能道路上再往前走一步,那未来的第三代智能计算系统需要支持的算法将远远超出机器学习的范畴,必须包括联想、推理、涌现等高级认知智能算法。我个人猜测,第三代智能计算系统可能会是孵化通用人工智能的虚拟世界环境。“智能计算系统”课程或许能激发学生的好奇心,吸引学生投身于未来的第三代智能计算系统的研究中。
智能计算系统课程概况
“智能计算系统”这门课程主要是面向人工智能、计算机和软件工程专业的高年级本科生或研究生。课程目标是培养学生对智能计算完整软硬件技术栈(包括基础智能算法、智能计算编程框架、智能计算编程语言、智能芯片体系结构等)融会贯通的理解,成为智能计算系统(子系统)的设计者和开发者。
课程的前序课程包括C/C++编程语言、计算机组成原理和算法导论(或机器学习)。课程的课时相对比较灵活,可以是大学期上一个学期(40学时,课程提纲见表1),可以是小学期集中上一周(20学时),也可以嵌入到其他机器学习课程中作为一个补充。对于20学时的短期学习,课程希望学生能对智能计算系统“知其然”,主要是面向实际操作;对于40学时的长期学习,课程希望学生能对智能计算系统“知其所以然”,因此要把机理讲透。
表1 智能计算系统课程提纲(40学时)
在课程讲授上,应该秉承两个原则。一是应用驱动。一门好的工程学科的课程应当是学以致用的,尤其是“智能计算系统”这样的课程,如果上完之后只学会了一些定理和公式,那基本没效果。另外一个原则是全栈贯通。过去计算机专业课程设计有个问题,就是条块分割明显,比如操作系统和计算机体系结构是割裂的,操作系统对计算机体系结构提出了什么要求,计算机体系结构对操作系统有哪些支持,没有一门课把这些串起来。“智能计算系统”作为高年级本科生(或研究生)课程,有义务帮助学生把过去所有的人工智能软硬件知识都串起来,形成整体理解。
对于“智能计算系统”课程,驱动范例是一个抓手。在国科大上课时,我们选择了视频风格迁移作为驱动范例。简单来说,风格迁移可以保留一个视频中每帧图片的基本内容,但是把图片的绘画风格改掉(比如从普通照片迁移成毕加索风格或者中国水墨画风格等,见图3)。对于学生来说,这是很有意思又在能力范围之内的一个驱动范例。
图3 从普通照片到毕加索风格迁移的驱动范例
我们围绕如何实现视频实时风格迁移,一步步带着学生写出算法,移植到编程框架上,为编程框架编写算子,再为算子设计芯片,构建多芯片系统,并测评这个系统的速度、能效和精度上的优势和劣势,然后进行系统的闭环迭代优化。最后再给大家一个智能计算系统的实验环境,包括摄像头和智能芯片开发板,学生就可以实现一个对摄像头拍摄的视频进行画风实时转换的“半产品”应用了。
结语
我的母亲是一位中学教师。我自己成长过程中,对我帮助非常大的几位前辈恩师陈国良、胡伟武和徐志伟,也都是常年浸淫在教学第一线,有着极大教学热情的名师。从小到大,这些长辈的言传身教,让我深刻地感受到,教育是一项伟大的事业,能深刻地改变学生、改变行业、改变 社会 、改变国家、改变人类。今天我们教给学生的那些人工智能知识,可能会影响明天我国在智能时代的竞争力。因此,虽然手头有不少基础研究任务,但我还是情愿把培养人工智能的系统人才当成自己未来最重要的使命,把自己绝大部分时间精力花在“智能计算系统”这门课程在各个高校的讲授和推广上。
非常欣慰的是,“智能计算系统”这样新生的一门课程,虽然还有很多缺陷,但还是得到了很多师生的支持和鼓励。我们已在或将在中国科学院大学、北京大学、北京航空航天大学、天津大学、中国科学技术大学、南开大学、北京理工大学、华中 科技 大学等多个高校联合开设这门课程。今年我们还会开放这门课程的所有PPT、讲义、教材、录像、代码、云平台和开发板,供老师们批评指正。非常欢迎大家给我发邮件,提出宝贵意见。
未来,我们希望和更多培养人工智能专业学生的高校合作,广泛参与人工智能系统课程的交流研讨,共同提高人工智能系统课程的教学水平。相信通过大家的共同努力,一定能解决人工智能系统课程开设中的实际困难,使得我国未来培养出来的人工智能人才没有技术上的短板。
作为一名青年教师,我在教学能力和经验上与很多教育领域的前辈有着巨大的差距,还需要更多地学习。这门“智能计算系统”课程,对于我国的人工智能系统能力培养来说,也顶多是起到抛砖引玉的作用。正如鲁迅先生在《热风·随感录四十一》中写给青年的一段话所言:“有一分热,发一分光,就令萤火一般,也可以在黑暗里发一点光……倘若有了炬火,出了太阳,我们自然……随喜赞美这炬火或太阳;因为他照了人类,连我都在内。”
脚注:
1 此文发表在《中国计算机学会通讯》(CCCF) 2014年第5期,;_ack=1。
2 CUDA:Compute Unified Device Architecture,计算统一设备架构。
3 参见。
作者介绍:
陈云霁
CCF杰出会员、CCF青年科学家奖获得者、CCCF编委。中科院计算所研究员。曾获首届国家自然科学基金“优秀青年基金”、首届国家万人计划“青年拔尖人才”以及中科院青年人才奖等奖项。主要研究方向为计算机体系结构。cyj@ict.ac.cn
点击 “阅读原文” ,加入CCF。
51单片机智能数据采集系统课程设计
//采集并返回
unsigned int Adc0832(unsigned char channel)
{
uchar i=0;
uchar j;
uint dat=0;
uchar ndat=0;
if(channel==0)channel=2;
if(channel==1)channel=3;
ADDI=1;
_nop_();
_nop_();
ADCS=0;//拉低CS端
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿1
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=channel0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿2
_nop_();
_nop_();
ADCLK=1;//拉高CLK端
ADDI=(channel1)0x1;
_nop_();
_nop_();
ADCLK=0;//拉低CLK端,形成下降沿3
ADDI=1;//控制命令结束
_nop_();
_nop_();
dat=0;
for(i=0;i8;i++)
{
dat|=ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
dat=1;
if(i==7)dat|=ADDO;
}
for(i=0;i8;i++)
{
j=0;
j=j|ADDO;//收数据
ADCLK=1;
_nop_();
_nop_();
ADCLK=0;//形成一次时钟脉冲
_nop_();
_nop_();
j=j7;
ndat=ndat|j;
if(i7)ndat=1;
}
ADCS=1;//拉低CS端
ADCLK=0;//拉低CLK端
ADDO=1;//拉高数据端,回到初始状态
dat=8;
dat|=ndat;
return(dat); //return ad data
}int main(void)
{
while(1)
P3=Adc0832(0);
}
网友评论
最新评论
于三大客观困难:一是国内还没有太多人工智能系统类的课程可供参考,二是国内缺乏人工智能系统类课程的师资,三是国际上缺乏人工智能系统课程的教材。 基于自己的研究背景,我对人工智能的算法和系统都有一些粗浅的涉猎。我是否能为解决人工智能系统课程、师资、教材上的困难作一点微薄
、计算机和软件工程专业的高年级本科生或研究生。课程目标是培养学生对智能计算完整软硬件技术栈(包括基础智能算法、智能计算编程框架、智能计算编程语言、智能芯片体系结构等)融会贯通的理解,成为智能计算系统(子系统)的设计者和开发者。 课程的前序课程包括C/C++编程语言、计算机组成原理和算法导论(或机