机器学习该怎么入门?

机器人控制该怎么入门?
【吕朝阳的回答(144票)】:
对于工科领域来说,脱离实践的学习都是肤浅的,对于控制这种强调经验的技术更是如此。如果去问一个程序员怎么学习一块技术,他必然让你去多编程。机器人领域也是。如果想把基本功打扎实,那么实践更是必不可少了。
对于普通学生入门来说 一款合适的机器人平台 + 入门级的控制算法进行试验。同时深入地学习相应地理论知识。
对于一个有控制基础,需要现学现用的工作者来说,啃一本诸如《现代控制工程》的书籍,在工作者演练,下面的平台内容直接略过。
关于平台的选择和相应的学习教程,我放在最后,防止大图分散了重点。
先结合机器人来说一下控制。对于设计任何一个控制系统来说,需要了解自己的输入、输出、控制元件,和算法。在一个简易的机器人系统里,分别对应的原件是:
输入 --- 传感器 (声呐,红外,摄像头,陀螺仪,加速度计,罗盘)
控制元件 --- 电机
控制算法 --- 控制板 (小到单片机,大到微机)
输出 --- 你的控制目标 (比如机器人的路径跟踪)
对这四方面都有了解之后,才能基本对机器人的控制有一个较为感性的认识。这是入门的基础。如果你对输入和输出做一个测量,比如用电机将某个轮子的转速从10加速到100,把这个测量勾画出来,那么这一个响应曲线。如何将电机准确快速地从10加速到100,这就需要一个简易的反馈控制器。
上面所说的各个传感器元件,都有廉价版可以购买学习,但随之引入的问题就是他们不精确,比如有噪声。消除这个噪声,你就需要在你的控制系统中引入更多的控制单元来消除这个噪声,比如加入滤波单元。
上面说这么多,只是想表达,理论和算法都是有应用背景的,但同时,学习一些暂时无法应用的算法也并不助于入门,甚至可能走偏门,觉得越复杂越好。所有的工程应用者都会说某某算法非常好,但是经典还是PID。倘若不亲手设计一个PID系统,恐怕真的领略不到它的魅力。我大学本科的控制课程包含了自动控制理论和现代控制理论,但是直到我设计一个四旋翼无人机的时候,才真正建立了我自己对机器人控制的理解。
推荐的那本《现代控制工程》是一本非常经典的专业书籍,需要理论知识,再进行详细的学习。我的建议是先玩,玩到需要时,认真学习这部分理论。
-----------------------------------------------------------------------------------------------------
推荐一些机器人平台。核心都涉及到运动控制。
基于arduino的机器人平台是最大众的平台了,这是一个开源社区,很多关于机器人的简易设计和控制算法实现都能在google得到。淘宝,包括arduino控制板和各类简易传感器,几百块之内钱都能得到。
同时推荐一下Udacity上的Robotics课程,基于arduino也都能实现完成。同时推荐一下Udacity上的Robotics课程,基于arduino也都能实现完成。
国外的有些Robotics课程使用的都是Lego Mindstorm作为实验平台(略土豪版)。红外,声呐,陀螺仪这些传感器Lego都有,同时它的电机也可以实现闭环控制。淘宝依旧可以买到(海外代购版,我买过)
Imperial College London的Robotics课程就是以Lego为实验平台的,Andrew Davison的课件上所有的理论都可以用Lego实现
如果这些都玩腻了,可以试试玩一个机器人飞行控制,比如四旋翼飞机。飞行器是六自由度控制,因此比小车要更加具有挑战性,也需要更精确的控制系统。下面这是我以前的一个四旋翼DIY,基于arduino MultiWii的。依旧淘宝
MultiWii是一个基于arduino的开源飞控平台,所有c代码都可得,不多于一两万行。如果把这些都研究透了,相比已经是专业水平了。
---------------------------------------------------------------------------------------------------
祝玩的愉快!
【老和居士的回答(9票)】:
谢邀。如果指的不是智能算法,是扎扎实实的机器人学,那么下列学科需要学习,重要性分先后:
机器人运动学,反向运动学,动力学
非线性控制,最优控制
自适应控制,智能控制
这里老是提到的pid在机器人中应用不多。pid广泛应用于过程工程,而机器人运动控制对响应速度的要求超出pid。作为最简单的例子,题主可以去搜搜lqr在倒立摆中的应用,这可以说是最简单直观的例子了
【王子豪的回答(18票)】:
说一下自己的看法和感悟,抛砖引玉。不一定正确,欢迎讨论。
曾经在coursera上过一门机器学习基石的课程,老师利用几周的时间以一个很简单的、甚至是不常用的PLA算法为例,讲解了有关机器学习所需要的知识,后来老师说这种算法应用性不强,但通过它可以讲到机器学习所涉及到的知识。在学过这些知识以后,再去学习一些复杂的算法,而流程都与设计PLA算法类似。
自动控制和机器学习是相似的,它涉及到了很多的算法,线性控制、非线性控制,一个自动化专业的学生一学就是2个学期,效果也不见得好。我的想法是,首先从一种经典的算法入手,(比如PID),围绕其展开学习,目的就是成功应用PID算法解决一些问题,(比如机器人的运动控制),之后再学习复杂的算法。目标确定了,但在学习之前先问自己3个问题( 的《暗时间》曾提到 ):
控制的本质是什么;控制的原则是什么;控制这一专业的知识构架是什么;以机器人运动控制举例。
机器人控制有三个元素:控制器(算法),执行器(电机),传感器;
控制的本质就是将规划系统的指令作为输入信息,将传感器探测得到的状态信息和导航系统的定位信息作为反馈,计算得到执行器的控制信号,完成运动控制的闭环。控制的原则就是稳定、准确、快速。知识构架分为两部分:理论环节、实践环节。理论环节即PID控制的原理,如何作用于被控物,这里包括自动控制原理中结构图、传递函数、数学模型、求解微分方程等知识的学习;实践部分则包括相关软硬件的知识,软件即编程,也涉及到操作系统的相关知识。硬件如工控板的使用等。围绕知识构架,无须事无巨细的学习,但要把PID了解透彻并成功应用。在这基础上再学习复杂的算法就会好一些。
================================update==================================
知识构架:
理论:掌握在相应环境下机器人的动力学模型、运动控制原理和方法、使用的控制策略以及运动控制器的设计。相应展开可以进行深入系统学习。仿真调试:相关工具如matlab或自己编程,将自己的算法、模型进行实现,是对理论知识的反馈,可以看自己的设计是否合理,对理论知识有更直观的了解。实物试验:涉及软硬件的部分,体会理论实际差距,进一步完善理论。关于这部分的掌握程度还是要看自己的目标是什么,围绕重心进行。如硬件部分,可以购买一些模块,以最少的经历实现目标。另外,光从整体到局部是不够的,有时不理解复杂系统的一些组成部分,就没法从整体上去把握。所以在遇到瓶颈时,可以对其展开学习。整体与局部并不矛盾,是可以一起进行的。
想学习一门专业,不该先入为主地受 XXX 该怎么样的观念制约,应该充分利用身边的资源工具进行学习。有项目就针对项目,没项目可以如吕朝阳老师所说购买机器人平台,再者可以通过仿真对理论进行验证。思考、总结和交流很重要。
【曹梦迪的回答(6票)】:
机器人是机器人,控制是控制……
感谢邀请。
自动控制入门的话当然是找任何一本高校教材,类似《自动控制原理》、《自动控制概论》什么的去读。(习题一定要做。)有能力的可以读英文教材,最出名的有尾形克彦(Katsuhiko Ogata,旧译绪方胜彦)的《现代控制工程》()
以及弗兰克林(Gene Franklin)、鲍威尔(David Powell)的《动态系统的反馈控制》和《数字系统的反馈控制》(
上面几本都有中译本,不过质量如何不清楚。
如果都没有兴趣可以看看钱老的《工程控制论》,也是不错的书。
所需要的基础有微分方程、积分变换(经典控制理论)、矩阵理论(现代控制理论)。
主要需要掌握的几个思想:
3. 动态性能
4. 状态及其估计
当然,学这么一点是绝对不够控制真正意义上机器人的。后面的东西还很多,具体的东西我了解得也不多,就不多啰嗦了。
【basicbeyond的回答(3票)】:
感谢邀请,本科确实是学自动控制的,但研究生的方向是模式识别,工作后搞的是机器视觉,然后一直到现在。所以对于控制来说,真的没有发言权。只谈谈个人看法。
个人感觉,学习机器人控制这种说法,好像并不严密。机器人控制应该是自动控制理论在实际中的一种应用吧,包括自动化的生产线等。所以要说入门的话,那就找一份自动化专业的课程单吧(基础课和专业课),当然专业必修课之一,肯定是《自动控制原理》了。说到这,竟然想起了那位治学严谨的白白胖胖的教自控的老师了,可能这是和自动化相关的唯一印象了。
工作后,接触的机器人或者机械手臂,都是成熟产品,更偏重于应用。这时,更关心的是,如何给机器植入“眼睛”,也就是机器视觉如何引导机器人动作,也算是视觉反馈。所以,在机器人应用中,更关注的是视觉算法及软件。
比较熟悉机器视觉,不懂控制,很可能答非所问,仅供参考吧
【陈叙的回答(2票)】:
能上youtube的话,建议看看的视频,非常好的基础教程。
不能上youtube的话,建议先学习翻墙。
【知乎用户的回答(2票)】:
《机器人学导论》,斯坦福的教材,80年代开始的,
有很挫的翻译版本。
我们团队的工程师人手一本。
看这个就行了,没必要想太多。
英文名字叫做《Introduction To Robotics, Mechanics and Control》
【WangNing的回答(1票)】:
请看Coursera上Prof. Magnus Egerstedt的课程Control of Mobile Robots。这里有你想要的所有答案。
【知乎用户的回答(1票)】:
推荐ROS,有相关的很全的WIKI网站,也有模拟器,一台电脑就可以学习
【知乎用户的回答(0票)】:
先找本书看,比如自动控制原理啊之类的,高校教材就可以,看的差不多了就上网去搜搜视频,听听老师的讲解,完了再对着书认真看看,应该就入门了
【徐晓君的回答(0票)】:
简单的说控制就是解决系统稳定、准确、响应快速性的问题,并且如何协调三者的关系,因为这三者往往相矛盾。建议先看看控制工程基础,结合自动控制理论(这两科普遍适用机电一体化系统),然后再到工业机器人控制方面的学习,要牵扯到运动学分析的知识。
【XiYang的回答(0票)】:
你可以不用真实的机器人,先用模拟器仿真一下。这样一来成本低,二来不会弄坏东西,三来重编程、部署比较省事。简单点的模型应当PC上就能带得动。
【王斌的回答(0票)】:
二手LEGO MINDSTORM ,例如9797,然后泡论坛,网上搜罗些学习资料(有深度成体系的都是英文书,国内翻译的都是很浅显的东西),翻墙看大牛作品。
【苏奕嘉的回答(0票)】:
多做好过多说。
Try Arduino
【郭文龙的回答(0票)】:
大概可以概括为三点:
1、传感器驱动及相关滤波算法。
2、动力系统及其闭环控制。
3、应用及人机界面
简单解释下
第一点可以让机械感知周围环境;第二点可以让机械运动并稳定的运动;第三点可以让机械有目的的运动并将状态等信息呈现给人类。
要做“机器人”,这三个领域就是基础。注意,是三个独立的领域。不但都要熟悉而且要融会贯通。
【何为真的回答(0票)】:
前面说的很好了,再推荐一个micromouse, 我查了一下中文叫电脑鼠???
很有意思的小机器人,你可以自己设置迷宫然后让micromouse去测量出最佳路径
【柳易守的回答(0票)】:
q的准就好!
【知乎用户的回答(0票)】:
先学好高等数学你就入门了。
&&&&&本文固定链接:
【上一篇】
【下一篇】
您可能还会对这些文章感兴趣!
最新日志热评日志随机日志(知者孙敏)
(是否仍完美无瑕)
(知者孙敏)
(yingyu66)
第三方登录:想了解机器学习?你需要知道的十个基础算法
毫无疑问,作为人工智能的子领域—机器学习在过去的几年中越来越受欢迎。由于大数据是目前科技行业最热门的趋势,基于大量的数据机器学习在提前预测和做出建议方面有巨大的潜力。一些有关机器学习常见的例子有:Netflix基于你以前看过的电影再给你做出影片的推荐,或者亚马逊根据你以前买过的书籍再给你进行图书推荐。
如果想了解更多有关机器学习的知识,要从哪里开始呢?作者第一次入门是在哥本哈根海外交流时选了一门有关人工智能的课程。这门课程的讲师是丹麦科技大学(Technicale
University of&
Denmark)的应用数学以及计算机科学全职教授,他的研究领域主要是逻辑学和人工智能方面,主要研究内容是使用逻辑来对计算机类人行为(比如计划、推理以及问题解决等)进行建模。这门课包括理论、核心概念探讨以及亲自动手解决问题。作者所使用的教材是人工智能(AI)领域的经典教材之一:Petere
Norvig's Artificial Intelligence — A
Approach(人工智能—现代方法),在其中我们学习的几个主题包括:智能agents、通过搜索解决问题、社会化AI、AI的哲学/社会学/未来。在课程的结尾,作者使用简单的基于搜索的agents来解决虚拟环境中的传输问题。
作者表示通过这门课程学到了相当多的知识,也决定继续学习这个特殊的课题。在接下来的几个星期,作者在旧金山参加了很多关于机器学习、神经网络、数据架构的科技讲座,特别是一个有很多业内知名学者参加的机器学习会议。最重要的是,作者在Udacity中选修了一门“机器学习入门”的在线课程,最近已经完成学习。在本文中,作者将在课程中学习到的机器学习算法分享给大家。
机器学习算法可以分为三个大类:监督学习、无监督学习、强化学习。其中:
监督学习对于有标签的特定数据集(训练集)是非常有效的,但是它需要对于其他的距离进行预测。
无监督学习对于在给定未标记的数据集(目标没有提前指定)上发现潜在关系是非常有用的。
强化学习介于这两者之间—它针对每次预测步骤(或行动)会有某种形式的反馈,但是没有明确的标记或者错误信息。本文主要介绍有关监督学习和无监督学习的10种算法。
1.决策树(Decision Trees):
决策树是一个决策支持工具,它使用树形图或决策模型以及序列可能性。包括各种偶然事件的后果、资源成本、功效。下图展示的是它的大概原理:
从业务决策的角度来看,大部分情况下决策树是评估作出正确的决定的概率最不需要问是/否问题的办法。它能让你以一个结构化的和系统化的方式来处理这个问题,然后得出一个合乎逻辑的结论。
2.朴素贝叶斯分类(Naive Bayesian classification):
朴素贝叶斯分类是一种十分简单的分类算法,叫它朴素贝叶斯分类是因为这种方法的思想真的很朴素,朴素贝叶斯的思想基础是这样的:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别。
它的现实使用例子有:
将一封电子邮件标记(或者不标记)为垃圾邮件
将一篇新的文章归类到科技、政治或者运动
检查一段文本表达的是积极情绪还是消极情绪
脸部识别软件
3.最小二乘法(Ordinary Least Squares Regression):
如果你懂统计学的话,你可能以前听说过线性回归。最小二乘法是一种计算线性回归的方法。你可以把线性回归当做在一系列的点中画一条合适的直线的任务。有很多种方法可以实现这个,“最小二乘法”是这样做的)
—你画一条线,然后为每个数据点测量点与线之间的垂直距离,并将这些全部相加,最终得到的拟合线将在这个相加的总距离上尽可能最小。
4.逻辑回归(Logistic Regression):
逻辑回归是一种强大的统计方法,它能建模出一个二项结果与一个(或多个)解释变量。它通过估算使用逻辑运算的概率,测量分类依赖变量和一个(或多个)独立的变量之间的关系,这是累积的逻辑分布情况。
总的来说,逻辑回归可以用于以下几个真实应用场景:
测量营销活动的成功率
预测某一产品的收入
特定某一天是否会发生地震
5.支持向量机(Support Vector Machine):
SVM(Support Vector Machine)是二元分类算法。给定一组2种类型的N维的地方点,SVM(Support
Machine)产生一个(N - 1)维超平面到这些点分成2组。假设你有2种类型的点,且它们是线性可分的。
SVM(Support Vector&
Machine)将找到一条直线将这些点分成2种类型,并且这条直线会尽可能地远离所有的点。
在规模方面,目前最大的使用支持向量机SVM(Support Vector&
Machine)(在适当修改的情况下)的问题是显示广告,人类剪接位点识别,基于图像的性别检测,大规模的图像分类等。
6.组合方法(Ensemble methods):
组合方法是学习算法,它构建一系列分类,然后通过采取加权投票预测的方式来对新的数据点进行分类。原始的集成方法是贝叶斯平均法,但最近的算法包括对其纠错输出编码、套袋、加速等。
那么组合方法如何运行的呢?为什么说它们比其他的模型要优秀?因为:
它们将偏差平均了:如果你将民主党派的民意调查和共和党的民意调查发在一起平均化,那么你将得到一个均衡的结果,且不偏向任何一方。
它们减少了差异:一堆模型的总结意见没有一个模型的单一意见那么嘈杂。在金融领域,这就是所谓的多元化
有许多股票组合比一个单独的股票的不确定性更少,这也为什么你的模型在数据多的情况下会更好的原因。
它们不太可能过度拟合:如果你有没有过度拟合的独立模型,你通过一个简单的方式(平均,加权平均,逻辑回归)对每个独立模型的预测进行结合,这样的话不太可能会出现过度拟合的情况。
无监督学习
7.聚类算法(Clustering Algorithms):
聚类是一种聚集对象的任务,例如:相比其他不同的组在同一组(集群)的对象彼此更为相似。
每个聚类算法都是不同的,比如说有以下几种:
基于质心的算法
基于连接的算法
基于密度的算法
神经网络/深度学习
8.主成分分析(Principal Component Analysis,PCA):
通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
一些主成分分析PCA程序的应用包括压缩、简化数据、可视化。注意,对于选择是否使用主成分分析领域知识是非常重要的。当数据是嘈杂的时候(所有的组件的主成分分析有相当高的方差),它是不适合的。
9. 奇异值分解(Singular Value Decomposition):
在线性代数中,SVD是一个非常复杂矩阵的因数分解。对于一个给定的m&n矩阵M,存在一个分解,M =
UΣV,其中u和v是单一矩阵,Σ是对角矩阵。
主成分分析PCA其是奇异值分解SVD的简单应用。在计算机视觉领域,第一人脸识别算法,运用主成分分析PCA其是奇异值分解SVD来代表面孔作为一个线性组合的“特征脸”,并对其做降维,然后通过简单的方法匹配合适的身份;虽然现代方法更复杂,但是许多人仍然依靠类似的技术。
10.独立成分分析(Independent Component Analysis):
独立成分分析(Independent Component&
Analysis,ICA)是一种揭示构筑随机变量、技术测量、信号等隐藏因素的统计技术。ICA定义了所观察到的多变量数据生成模型,这通常是给定为一个大型数据库的样本。在该模型中,数据变量被假定为一些未知潜变量的线性混合,同时混合系统也仍然未知。潜变量被假定是非高斯和相互独立的,它们被称为所观察到的数据的独立分量。
ICA与PCA是相关的,但它更强大。在这些经典的方法完全失败的时候,ICA能够找到源头的潜在因素。它的应用包括数字图像、文档数据库、经济指标和心理测试。
通过以上介绍,相信大部分人对于机器学习的算法都有一定的了解。如果对这方面感兴趣的话,可以接着运用你理解的算法去创造机器学习应用,为世界各地的人们创造更好的生活条件。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。自学党。对计算机技术比较感兴趣,能系统的学习一门学科,是我的习惯。请问,机器学习前需要掌握什么?再是怎么学习?推荐好的学习方法和入门进阶书籍,或是其他学习渠道,如MOOK。
书:要有好几本,最好是角度差异大、深浅程度不同,比如系统的导论式的、深入的有推导的、浅出的手把手的。它要充当不同学习过程中的工具书。网络教程:比如Andrew Ng的、各种专题的博客,有针对地找相应的教程,相对着看,网络资源跟书的表达方式毕竟是不一样的,所以也是很有益的信息源paper:比如学CNN的时候,就搜一堆论文来,集中一段时间看一轮,一定要有针对性,带着很明确的问号去看。开源资源:很多很多东西,其实都有人做出来开源了,直接拿来用,一边用一边理解,甚至可以学习源码关注这个领域:关注相关的会议期刊,关注大牛们(Hinton、Bengio、LeCun等)的动向,微博加一堆领域大牛每天看一眼他们分享什么上来至于视频学习,我个人不太喜欢,信息密度太低,效率太低,还不如多看些书和论文(当然,你如果想瞻仰大神们,还是可以看看的)。基础知识:线代、统计、概率、数学分析;信息论方面基本概念要理解,比如要知道相对熵是什么意思和怎么算;凸优化和最优估计相关内容,在各种各样问题中都会遇到,学好了可以帮大忙。机器学习主要就是找到目标函数并且做参数估计,虽然有很多现成工具,但是不熟悉优化问题的话,会很抓瞎。模型总要熟悉几个吧,神经网络(SAE、RBM、CNN等)、SVM、最大熵、CRF、随机森林、GMM等等。了解不同应用场景下各种模型有什么优劣,挑一些自己以后可能常用到的多练习。
已有帐号?
无法登录?
社交帐号登录
我是机器鼓励师}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信