① 如何做算法研究
一、DSP与TI
为什么提到电机控制很多人首先会联想到DSP?而谈到DSP控制总绕不过TI,首先DSP芯片是一种具有特殊结构的微处理器。该芯片的内部采用程序和数据分开的哈佛结构,具有专门的硬件乘法器,提供特殊的指令,可以用来快速地实现各种数字信号处理算法。基于DSP芯片构成的控制系统事实上是一个单片系统,因此整个控制所需的各种功能都可由DSP芯片来实现。因此,可以减小目标系统的体积,减少外部元件的个数,增加系统的可靠性。优点是稳定性好、精度高、处理速度快,目前在变频器、伺服行业有大量使用。主流的DSP厂家有美国德州仪器(Texas Instruments,TI)、ADI、motorola、杰尔等其他厂商,其中TI的TMS320系列以数字控制和运动控制为主,以价格低廉、简单易用、功能强大很是受欢迎。
二、常见的电机控制算法及研究方法
1、电机控制按工作电源种类划分:可分为直流电机和交流电机。按结构和工作原理可划分:可分为直流电动机、异步电动机、同步电动机。不同的电机所采用的驱动方式也是不相同的,这次主要介绍伺服电机,伺服主要靠脉冲来定位,伺服电机接收到1个脉冲,就会旋转1个脉冲对应的角度,从而实现位移,因此,伺服电机本身具备发出脉冲的功能,所以伺服电机每旋转一个角度,都会发出对应数量的脉冲,同时又与伺服电机接受的脉冲形成了呼应,或者叫闭环,进而很精确的控制电机的转动,从而实现精确的定位,可以达到0.001mm。伺服电机相比较普通电机优势在于控制精度、低频扭矩,过载能力,响应速度等方面,所以被广泛使用于机器人,数控机床,注塑,纺织等行业
三、PWM控制及测试结果
脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中,脉冲宽度调制是一种模拟控制方式,其根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变
② 算法的研究方法和技术有哪些
论文的研究方法与技术路线有哪些
1、研究背景 研究背景即提出问题,阐述研究该课题的原因。研究背景包括理论背景和现实需要。还要综述国内外关于同类课题研究的现状:①人家在研究什么、研究到什么程度?②找出你想研究而别人还没有做的问题。③他人已做过,你认为做得不够
③ 算法设计的研究内容
嘿嘿 是昊哥的作业吧 O(∩_∩)O哈哈~
④ 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期,https://dl.ccf.org.cn/institude/institudeDetail?id=3738875863074816&_ack=1。
2 CUDA:Compute Unified Device Architecture,计算统一设备架构。
3 参见https://study.163.com/curricula/cs.htm。
作者介绍:
陈云霁
CCF杰出会员、CCF青年科学家奖获得者、CCCF编委。中科院计算所研究员。曾获首届国家自然科学基金“优秀青年基金”、首届国家万人计划“青年拔尖人才”以及中科院青年人才奖等奖项。主要研究方向为计算机体系结构。[email protected]
点击 “阅读原文” ,加入CCF。
⑤ 异构网络的网络选择算法的研究
异构网络中无线资源管理的一个重要研究方向就是网络选择算法,网络选择算法的研究很广泛,这里给出了几个典型的无线网络选择算法的类别。 预切换可以有效的减少不必要的切换,并为是否需要执行切换做好准备。通常情况下可以通过当前接收信号强度来预测将来接收信号强度的变化趋势,来判断是否需要执行切换。
文献 中利用多项式回归算法对接收信号的强度进行预测,这种方法的计算复杂度较大。文献 中,利用模糊神经网络来对接收信号强度进行预测,模糊神经网络的算法最大的问题,收敛较慢,而且计算的复杂度高。文献 中,利用的是最小二乘算法(LMS)来预测接收的信号强度,通过迭代的方法,能够达到快收敛,得到较好的预测。还有在文献 中,直接采用接收信号强度的斜率来预测接收信号强度,用来估计终端在该网络中的生存时间,但是这种方法太简单,精度不是很高。 在垂直切换的过程中,对于相同的切换场景,通常会出现现在的已出现过的切换条件,对于其垂直切换的结果,可以应用到当前条件下,这样可以有效避免的重新执行切换决策所带来的时延。
文献[33]中,提出利用用户连接信息(User Connection Profile,UCP)数据库用来存储以前的网络选择事件。在终端需要执行垂直切换时,首先检查数据库中是否存在相同的网络选择记录,如果存在可以直接接入最合适的网络。在文献[34]中,提出了将切换到该网络的持续服务时间和距离该网络的最后一次阻塞时间间隔作为历史信息记录下来,根据这些信息,选择是否有必要进行切换。 由于用户对网络参数的判断往往是模糊的,而不是确切的概念,所以通常采用模糊逻辑对参数进行定量分析,将其应用到网络选择中显得更加合理。模糊系统组成通常有3个部分组成,分别是模糊化、模糊推理和去模糊化。对于去模糊化的方法通常采用中心平均去模糊化,最后得到网络性能的评价值,根据模糊系统所输出的结果,选择最适合的网络。
通常情况下,模糊逻辑与神经网络是相互结合起来应用的,通过模糊逻辑系统的推理规则,对神经网络进行训练,得到训练好的神经网络。在垂直切换的判决的时候,利用训练好的神经网络,输入相应网络的属性参数,选择最适合的网络接入。
基于模糊逻辑和神经网络的策略,可以对多种因素(尤其动态因素)进行动态地控制,并做出自适应的决策,可以有效提高网络选择的合理性,但该策略最大的缺点是,算法的实现较为复杂,在电池容量和处理能力均受限的移动设备上是不合适的。 在异构网络选择中,博弈论是一个重要的研究方向。在博弈论的模型中,博弈中的参与者在追求自身利益最大化的同时,保证自身付出的代价尽量小。参与者的这两种策略可以通过效用函数和代价函数来衡量。因此通过最大化效用函数和最小化代价函数,来追求利益的最大化。
文献[36]中提出一种基于博弈论的定价策略和网络选择方案,该方案中服务提供商(Service Providers,SPs)为了提高自己的利润需要面临竞争,它是通过用户间的合作或者非合作博弈来获得,在实际的异构网络场景下,用户和服务提供商SPs之间可以利用博弈模型来表示。Dusit Niyato在文献[37]中,通过竞价机制来进行异构网络资源的管理,这里将业务分成两种类型,一种是基本业务,另一种类似高质量业务,基本业务的价格是固定的,而高质量业务的价格是动态变化的,它是随着服务提供商的竞争和合作而变化的。因此这里从合作博弈和非合作博弈两方面来讨论定价机制。Dusit Niyato在文献[38]中基于进化博弈理论,来解决在带宽受限情况下,用户如何在重叠区域进行网络选择。 网络选择的目标通常是通过合理分配无线资源来最大化系统的吞吐量,或者最小化接入阻塞概率等,这样就会涉及网络优化问题。
网络选择算法往往是一种多目标决策,用户希望得到好的服务质量、价格便宜的网络、低的电池功率消耗等。对于多目标决策算法,通常是不可能使得每个目标同时达到最优,通常的有三种做法:其一,把一些目标函数转化为限制条件,从而减少目标函数数目;其二,将不同的目标函数规范化后,将规范化后的目标函数相加,得到一个目标函数,这样就可以利用最优化的方法,得到最优问题的解;其三,将两者结合起来使用。例如文献[39]中,采用的是让系统的带宽受限,最大化网络内的所有用户的手机使用时间,即将部分目标函数转化为限制条件。文献[40]中,采用的是让用户的使用的费用受限,最大化用户的利益和最小化用户的代价,这里采用的是上面介绍的第三种方法。 基于策略的网络选择指的是按照预先规定好的策略进行相应的网络操作。在网络选择中,通常需要考虑网络负荷、终端的移动性和业务特性等因素。如对于车载用户通常选择覆盖范围大的无线网络,如WCDMA、WiMAX等;对于实时性要求不高的业务,并且非车载用户通常选择WLAN接入。这些均是通过策略来进行网络选择。
文献[41, 42]提出了基于业务类型的网络选择算法,根据用户的业务类型为用户选择合适的网络。文献[35]提出基于负载均衡的网络选择算法,用户选择接入或切换到最小负载因子的网络。[43]提出了一种考虑用户移动性和业务类型的网络选择算法。 多属性判决策略(Multiple Attribute Decision Making,MADM)是目前垂直切换方面研究最多的领域。多属性判决策略主要分为基于代价函数的方法和其他方法。
基于代价函数的方法
代价函数一般有两种构造形式,一种是多属性参数值的线性组合,如(2.1)式所示;另一种是多属性参数值的权重指数乘积或者是属性参数值的对数线性组合,如(2.2)式所示。
(2.1)
(2.2)
其中代表规范化的第个网络的第个属性值,代表第个属性的权值。对于属性的规范化,首先对属性进行分类,分为效益型、成本型等,然后根据不同的类型的,对参数进行归一化,采用最多的是线性规范化、极差规范化和向量变换法。关于权值的确定可以分为简单赋权法(Simple Additive Weighting,SAW)、层次分析法(Analytic Hierarchy Process,AHP)、熵权法、基于方差和均值赋权法。
(1) SAW:用户根据自己的偏好,确定每个属性的重要性,通常给出每个参数取值的具体参数值。
(2) AHP:首先分析评价系统中各要素之间关系,建立递阶层次结构;其次对同一层次的各要素之间的重要性进行两两比较,构造判断矩阵;接着由每层判断矩阵计算相对权重;最后计算系统总目标的合成总权重。
(3) 熵权法:通过求解候选网络中的同一属性的熵值,熵值的大小表明网络同一属性的参数值的差异,差别越大,说明该属性对决策影响越大,相应权值的取值就越大。
(4) 基于方差和均值赋权法:通过求解候选网络中同一属性参数的均值和方差,结合这两个参数确定该属性的重要性程度值,然后再对其进行归一化,得到每个属性的参数值。
其他方法
(1) 基于方差和均值赋权法:通过求解候选网络中同一属性参数的均值和方差,结合这两个参数确定该属性的重要性程度值,然后再对其进行归一化,得到每个属性的参数值。
(2) 逼近理想解排序法(TOPSIS):首先对参数进行归一化,从网络的每组属性参数值里选择最好的参数组成最优的一组属性参数,同样也可以得到最差的一组属性参数。将每个网络与这两组参数比较,距离最优参数组越近,并且与最差组越远,该网络为最合适的网络。
(3) 灰度关联分析法(GRA):首先对参数进行归一化,再利用GRA方法,求得每个网络的每个属性的关联系数,然后求出每个网络总的关联系数。根据每个网络总的关联系数,选择最适合的网络。
(4) 消去和选择转换法(ELECTRE):首先对参数进行归一化,构造加权的规范化矩阵,确定属性一致集和不一致集。然后计算一致指数矩阵和劣势矩阵,最后得到一致指数矩阵和不一致指数矩阵。根据这两个矩阵,确定网络的优劣关系,选择最适合的网络。
VIKOR:首先对参数进行归一化,首先确定最优和最差属性参数组,然后计算得到每个网络属性的加权和属性中最大的参数值,然后利用极差规范化对网络的加权和以及最大属性值进行归一化,最后利用归一化的参数进行加权求和,依据这个值,选择最合适的网络。
⑥ 最优化理论与算法贴吧开通了大家一起加入交流吧!
你好,交个朋友,谢谢采纳为最佳答案
⑦ 数据挖掘十大经典算法(1)——朴素贝叶斯(Naive Bayes)
在此推出一个算法系列的科普文章。我们大家在平时埋头工程类工作之余,也可以抽身对一些常见算法进行了解,这不仅可以帮助我们拓宽思路,从另一个维度加深对计算机技术领域的理解,做到触类旁通,同时也可以让我们搞清楚一些既熟悉又陌生的领域——比如数据挖掘、大数据、机器学习——的基本原理,揭开它们的神秘面纱,了解到其实很多看似高深的领域,其实背后依据的基础和原理也并不复杂。而且,掌握各类算法的特点、优劣和适用场景,是真正从事数据挖掘工作的重中之重。只有熟悉算法,才可能对纷繁复杂的现实问题合理建模,达到最佳预期效果。
本系列文章的目的是力求用最干练而生动的讲述方式,为大家讲解由国际权威的学术组织the IEEE International Conference on Data Mining (ICDM) 于2006年12月评选出的数据挖掘领域的十大经典算法。它们包括:
本文作为本系列的第一篇,在介绍具体算法之前,先简单为大家铺垫几个数据挖掘领域的常见概念:
在数据挖掘领域,按照算法本身的行为模式和使用目的,主要可以分为分类(classification),聚类(clustering)和回归(regression)几种,其中:
打几个不恰当的比方 :
另外,还有一个经常有人问起的问题,就是 数据挖掘 和 机器学习 这两个概念的区别,这里一句话阐明我自己的认识:机器学习是基础,数据挖掘是应用。机器学习研制出各种各样的算法,数据挖掘根据应用场景把这些算法合理运用起来,目的是达到最好的挖掘效果。
当然,以上的简单总结一定不够准确和严谨,更多的是为了方便大家理解打的比方。如果大家有更精当的理解,欢迎补充和交流。
好了,铺垫了这么多,现在终于进入正题!
作为本系列入门的第一篇,先为大家介绍一个容易理解又很有趣的算法—— 朴素贝叶斯 。
先站好队,朴素贝叶斯是一个典型的 有监督的分类算法 。
光从名字也可以想到,要想了解朴素贝叶斯,先要从 贝叶斯定理 说起。
贝叶斯定理是我们高中时代学过的一条概率学基础定理,它描述了条件概率的计算方式。不要怕已经把这些知识还给了体育老师,相信你一看公式就能想起来。
P(A|B)表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:
其中,P(AB)表示A和B同时发生的概率,P(B)标识B事件本身的概率。
贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A)。
而贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。
下面不加证明地直接给出贝叶斯定理:
有了贝叶斯定理这个基础,下面来看看朴素贝叶斯算法的基本思路。
你看,其思想就是这么的朴素。那么,属于每个分类的概率该怎么计算呢?下面我们先祭出形式化语言!
那么现在的关键就是如何计算第3步中的各个条件概率。我们可以这么做:
因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:
如果你也跟我一样,对形式化语言有严重生理反应,不要怕,直接跳过前面这一坨,我们通过一个鲜活的例子,用人类的语言再解释一遍这个过程。
某个医院早上收了六个门诊病人,如下表。
现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他最有可能患有何种疾病?
本质上,这就是一个典型的分类问题, 症状 和 职业 是特征属性, 疾病种类 是目标类别
根据 贝叶斯定理
可得
假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了
这是可以计算的。
因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。
接下来,我们再举一个朴素贝叶斯算法在实际中经常被使用的场景的例子—— 文本分类器 ,通常会用来识别垃圾邮件。
首先,我们可以把一封邮件的内容抽象为由若干关键词组成的集合,这样是否包含每种关键词就成了一封邮件的特征值,而目标类别就是 属于垃圾邮件 或 不属于垃圾邮件
假设每个关键词在一封邮件里出现与否的概率相互之间是独立的,那么只要我们有若干已经标记为垃圾邮件和非垃圾邮件的样本作为训练集,那么就可以得出,在全部垃圾邮件(记为Trash)出现某个关键词Wi的概率,即 P(Wi|Trash)
而我们最重要回答的问题是,给定一封邮件内容M,它属于垃圾邮件的概率是多大,即 P(Trash|M)
根据贝叶斯定理,有
我们先来看分子:
P(M|Trash) 可以理解为在垃圾邮件这个范畴中遇见邮件M的概率,而一封邮件M是由若干单词Wi独立汇聚组成的,只要我们所掌握的单词样本足够多,因此就可以得到
这些值我们之前已经可以得到了。
再来看分子里的另一部分 P(Trash) ,这个值也就是垃圾邮件的总体概率,这个值显然很容易得到,用训练集中垃圾邮件数除以总数即可。
而对于分母来说,我们虽然也可以去计算它,但实际上已经没有必要了,因为我们要比较的 P(Trash|M) 和 P(non-Trash|M) 的分母都是一样的,因此只需要比较分子大小即可。
这样一来,我们就可以通过简单的计算,比较邮件M属于垃圾还是非垃圾二者谁的概率更大了。
朴素贝叶斯的英文叫做 Naive Bayes ,直译过来其实是 天真的贝叶斯 ,那么他到底天真在哪了呢?
这主要是因为朴素贝叶斯的基本假设是所有特征值之间都是相互独立的,这才使得概率直接相乘这种简单计算方式得以实现。然而在现实生活中,各个特征值之间往往存在一些关联,比如上面的例子,一篇文章中不同单词之间一定是有关联的,比如有些词总是容易同时出现。
因此,在经典朴素贝叶斯的基础上,还有更为灵活的建模方式—— 贝叶斯网络(Bayesian Belief Networks, BBN) ,可以单独指定特征值之间的是否独立。这里就不展开了,有兴趣的同学们可以做进一步了解。
最后我们来对这个经典算法做个点评:
优点:
缺点:
好了,对于 朴素贝叶斯 的介绍就到这里,不知道各位看完之后是否会对数据挖掘这个领域产生了一点兴趣了呢?
⑧ 祖冲之算法集的介绍
祖冲之算法集(ZUC算法)是由我国学者自主设计的加密和完整性算法,包括祖冲之算法、加密算法128-EEA3和完整性算法128-EIA3,已经被国际组织3GPP推荐为4G无线通信的第三套国际加密和完整性标准的侯选算法。由中国科学院信息工程研究所信息安全国家重点实验室和中国科学院数据与通信保护研究教育中心(DCS中心)联合主办的《第一届祖冲之算法国际研讨会》将于2010年12月2至3在北京召开。本次国际研讨会对于加强祖冲之算法研究分析成果的国内和国际交流,扩大祖冲之算法的公开平评估范围,加强祖冲之算法的安全性评估力度,进而推进祖冲之算法4G通信国际加密标准的进度具有重要的现实意义。
⑨ 为什么要研究算法
01 算法的优劣是程序质量的重要标志。当我们遇到难题时,总是要求计算机在较短时间内解决难题,这样我们就得深入研究算法,挑选出好的算法,以编出高效、实用的软件,使计算机更快、更出色地完成任务。
通俗地说,算法就是解决问题的具体办法。在《三国演义》中,周瑜与诸葛亮为了打破曹操强大的80万大军的进攻,先设法除去曹军中谙熟水战的水军将领蔡瑁、张允,于是就有了“群英会蒋干中计”;曹军中没有了真正懂得水战规律的将领,加上北方军人不适应舰船上生活,于是庞统的连环计获得成功;由于是隆冬季节在大江之上作战,所以就要有黄盖使苦肉计和草船借箭,然后,东吴水军才能在东南风起时火烧赤壁,取得破曹的决定性胜利。这也是周瑜、诸葛亮的破曹算法。以上环节中如果有一个环节失误,后果不堪设想。
在日常生活中,要解决一个问题,也总要先找出解决这个问题的步骤或办法。问题简单,解决问题的步骤就少些;问题复杂,解决问题的步骤就多。
许多着名的问题能得到解决,都是因为有人提出了巧妙的算法。举一个简单的例子:9枚外表相同的硬币中混进了一枚假币,知道它与真币重量不同,如果给你一架天平,至少需要称几次才能找到那枚假币?这个算法你可能很快就会设计出来。但如果999枚硬币中混进一枚假币,你又怎样用天平将它称出来呢?再举一个例子:有几个公路互通的城市,售货员从一个城市出发,要乘车走遍所有几个城市,最后回到出发点,该怎样找出售货员可以走的最短线路?用计算机与人下棋,如果是下五子棋,走棋的算法较简单,可能很多人都能设计出来,若是走围棋呢?恐怕就很难设计算法了!
在计算机领域,算法是指计算机用来解决某一问题的精确的方法。它是计算机程序的重要组成部分,算法的优劣是程序质量的重要标志。当我们遇到难题时,总是要求计算机在较短时间内解决难题,这样我们就得深入研究算法,挑选出好的算法,以编出高效、实用的软件,使计算机更快、更出色地完成任务。
⑩ 如何用算法解决现实世界里的问题
您好,请问您是想知道如何用算法解决现实世界里的问题吗?