机器学习入门的常见问题集
机器学习入门的常见问题集
大家好,我是木羊同学,昨天受邀参加开源中国的高手问答栏目。这次主题定的是机器学习入门,栏目的提问质量很高,有好些个问题着实搔着了痒处。
这次的提问都很有意思,串起来可以编一套“机器学习入门的常见问题集”,这里我浓缩成三个很有代表性的问题,推荐给在机器学习上一直敲门还没进去的同学看看。
第一个问题,是起点:为什么神经网络能模拟人脑?
回想一下,当你终于决定要开始学机器学习之前,究竟是什么触动了你的心?触动我的心的,就是上面这个问题。我的故事就充满了中二的气息,《超能特战队》是一部人工智能题材的科幻动画,我喜欢里面超暖的大白(●—●),而且用的是技术宅风格的喜欢:我想实现它。
当然,当时之所以会有这个大胆的想法,主要是因为很无知。我选择用神经网络。神经网络,有的书上称为人工神经网络,还有什么会比选择使用名叫“人工神经网络”的算法来实现人工智能更自然而然的事呢?更何况当时我还知道,神经网络最近推出了一个高清重制版,名叫深度学习,很多人甚至开始讨论深度学习会取代其它机器学习算法,看起来前途无量。
不过很快,我的问题就变成了“神经网络能不能模拟人脑”。我以为这个问题很简单,三天怎么就能找到答案。可是,没有一本书能作出肯定或否定的回答,当时也没有高手问答这么好的栏目让我提问。我没想到,为了一个看似简单的谜底,竟然需要花费未来数年的时光。
“很遗憾,神经网络并不能模拟人脑”,我斟酌许久,开始一个字一个字地对今天的问题,也是我当年的问题敲下自己的回答。今天,神经网络,或者叫深度学习,已然大红大紫,然而,这套名叫“神经网络”的算法只做了非常有限的仿生,非要和人的神经网络相比较的话,我认为是平行线的两条边。人的神经网络没法求导,而机器学习的神经网络本质只是拟合曲线,只不过随着神经网络深度的加深,模型的拟合能力也随之加强。再复杂的曲线,只要有足够的深度和足够的数据进行训练,神经网络就能表达出来,这也正是深度学习的“深度”二字的由来。
我们所处在的是一个正在蓬勃发展的社会,“学机器学习能找一份怎样的工作”,自然是每一个务实的人所应当关心的问题。只是我想,心怀当年那份求知的渴望,也许才能更容易在问题叠着问题的知识体系中坚持下来。
第二个问题,是困扰:机器学习的数学究竟该怎么学,为什么花了很多时间去学,却仍然感觉啥也没学会?
机器学习很特别,它既是算法,又是数学,但无论你把它当做是一门算法,还是一门数学来学,都会有迷路的感觉。今天有人很形象地形容了这种感觉:一直在学,也学了很多,可是,到头来不是还没搞懂原理,就是搞懂了原理看不懂公式,要么就是看懂了公式,却还是不知道怎样写成算法运行。
“机器学习要先学好数学”,这应该是大家都听过的“好心”劝告。最终,大家都在困扰中问出那个问题:学机器学习,究竟要不要手推公式?每一个初学者想必都对此很纠结。机器学习的教材也很纠结,所以会走两个极端:一种是偏重编程,既然大家都看不懂数学,那干脆统统刨去,只留代码。可是,这种教材读完之后,免不了会留下知其然不知其所以然的不安感。想要系统全面地学?那好,另一种偏重数学的教材,翻开一看,里面全是意义不明的数学公式符号,还有各种拗口的术语名词,让人读得昏头转向,很快迷失方向。
该怎么学才好呢?
我在我的那本《机器学习算法的数学原理与Python实现》中提出了一个概念,叫“数学语”。名字怪怪的,不过意思很好理解。学机器学习的数学,不该是自古华山一条路。不同的学习动机,应该对应不同的学习路径。很多人,甚至可能是大多数的人,真正关心的不是数学上怎么证明收敛,而是这些数学符号到底在说什么,想要知道的是翻译:把这门希腊符号写成数学语,翻译成看完了能够说一声“原来如此”的大白话,进而了解这款模型为什么能到做这些,又会有怎样的不足之处。
最后一个问题,是工具:机器学习的算法在现实中该怎么使用呢?
编程需要确定编程语言,首先推荐的是Python。早前做机器学习,是Python和R二选一,不过Python的资源明显丰富得多,特别是近年在深度学习方面有着无法比拟的优势,不是唯一的选择,也是最佳的选择。Python还有一个优点,就是语法简单,有了其它编程语言的基础,很快就能转过来。
确定了语言,接下来大家自然就会产生一个朴素的愿望:有没有那么一款工具,能够直接将那些个乱糟糟的数学式子一下转成Python代码?毕竟数学符号和Python代码长得太不像了,不知道该怎样把书上这些数学式子运行起来。
可惜的是,现在还没有这样便利的工具。不过,Python有很多专门的库,能够明显降低我们使用机器学习算法的门槛。常用的有三款,第一款是numpy,机器学习用到的各种矩阵运算里面都有,只要了解了式子的意思,就能用numpy照猫画虎。第二款是Scikit-Learn,对常用的机器学习算法做了非常好的封装,使用很简单,就是调用API。第三款是Pandas,机器学习的任务通常需要处理数据,而Pandas是首选的利器。
最后,高手问答栏目现在还在继续,对上面话题感兴趣,想进一步了解机器学习怎样入门的朋友,欢迎来这里交流,还有机会获赠正版图书哦:
https://www.oschina.net/question/4105562_2315636
也欢迎大家加入我这本书的读者群来讨论交流:
为机器学习爱好者推荐下我的书:
《机器学习算法的数学解析与Python实现》
入门机器学习的第一本书。从生活案例中理解算法,发现算法的乐趣,再把算法应用到机器学习中,让你零基础掌握算法精髓,快速进入人工智能开发领域。
购买链接:https://item.jd.com/12615709.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
从阿里、腾讯的面试真题中总结了这11个Redis高频面试题
前言 现在大家的工作生活基本已经是回归正轨了,最近也是迎来了跳槽面试季,有些人已经拿到了一两个offer了。 这段时间收集了阿里、腾讯、百度、京东、美团、字节跳动等公司的Java面试题,总结了Redis系列的高频面试题:1、Redis持久化机制2、缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题3、热点数据和冷数据是什么4、Memcache与Redis的区别都有哪些?5、单线程的redis为什么这么快6、redis的数据类型,以及每种数据类型的使用场景7、redis的过期策略以及内存淘汰机制8、Redis 为什么是单线程的9、Redis 常见性能问题和解决方案?10、为什么Redis的操作是原子性的,怎么保证原子性的?11、Redis事务 Redis系列高频面试题解析 Redis持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。实现:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的...
-
下一篇
云计算或将为运营商带来“第二桶金”
近期,三大运营商2019年财报相继出炉。在传统业务市场饱和、流量红利消失的大背景下,三大运营商都受到了不同程度的影响,尤其是以语音为代表的传统业务收入大幅下降,运营商仍然在“阵痛期”艰难前行。 而随着云计算、大数据、物联网、工业互联网等创新业务领域进入规模增长期,运营商新兴业务布局开始迎来新的发展风口。 5G+云计算带来新机遇 受新冠肺炎疫情与转型整改影响,2020年运营商似乎切换到了“困难”模式。但是,“莫道春寒尚料峭,危中有机天地宽”,疫情也催生了智能化、云化和在线服务需求。这将大大激发行业信息化需求,加快全社会数字化服务的变革进程,成为运营商转型发展的加速器、深化改革创新的催化剂。 传统业务增长空间有限,因此三大运营商一直以来都在积极探索新兴业务。从三家运营商的业绩表现来看,2019年中国移动立足个人移动市场的领先地位,加大了对国际业务、股权投资、数字内容、金融科技四大新领域的拓展力度;中国联通则把发展重心放在产业互联网上,聚焦重点行业市场,加快云计算、大数据、物联网等重点创新业务的能力培养和规模拓展;中国电信充分发挥云网融合优势,不断提升用户感知,强化综合竞争优势,打造智慧家庭...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- MySQL数据库在高并发下的优化方案
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8编译安装MySQL8.0.19