简单粗暴地入门机器学习

有很多小伙伴问过我零基础要怎么入门机器学习或者人工智能,今天来提炼一下,方便志同道合的朋友们参考。

记得我刚入此山洞准备修炼的时候,就 Google 了好多这类的问题,那时候觉得大家的建议好多呀,这条路看起来真长,那么多东西要学,那么多书要看,那么多有用的课程要学。

现在我可以就自己走过的坑坑包包来推荐一条简单粗暴的路径。


[step 1: 方向]

在行动之前,先想好这几个最基本的问题,如果自己想不全都可以去搜一下,知乎上很多大拿的回答:

--1.为什么要学习机器学习或者人工智能呢?

我的话,很实在地说,就是不想被淘汰呀!最开始就是这么一个感觉。

官方一点的话,就是可以提高效率呀。

广泛的需求我并没有去想,只是想解决一下自己的需求。

譬如,不想做家务,就弄个机器人给我做;不想做琐事,就弄个智能助理给我做。

所以大家在开始入洞之前,也要先想几分钟这个问题:

eg:是想做数据科学还是人工智能开发呢?

if Data Science:就多做 kaggle 上偏分析的项目

if AI:再想想是自然语言处理还是图像识别呢?

我觉得 NLP 和 CV 是最基础的技术,AI 主要还是看应用领域,现在比较火的:自动驾驶,聊天机器人,ARVR,智能家居,智能教育,等等,最基础的就是看和理解么,当然对于每个具体的方向,肯定是涉及到更多技术和具体的细节知识需要去学的,不过入门的话,这俩是基础。可以选其一,有兴趣也可以选俩。AI 主要还是跟实际应用场景关联起来意义才大,医疗,生物,气象,教育,交通目前比较火,对某个领域感兴趣可以专攻更深。

--2.机器学习,人工智能,数据科学的关系?

为了确立明确的入口,最好是知道这三者的关系,方便大家做计划时更专注一些

大家可以去多看几篇这样的文章,可以很快地了解一下大纲。

我比较喜欢下面这个图,因为它还列出了其他几个大的技能。

来自这篇文章:http://www.cnblogs.com/DonJiang/p/5744535.html

从这个图看,机器学习的基础还是要看滴,虽然现在深度学习很流行,类似 Tensorflow 等平台也可以直接把数据仍进去,调用多种模型,变换网络的层次等参数,它就输出结果,不过神经网络模型是只是机器学习的一种,不是全部。当然开始的话,完全可以跨过ML课程,去学用TF训练一个聊天机器人,分析情绪,翻译器等等。

--3.多长时间后想达到什么样的目标?

eg:1 年后找到 ML 工作

then:简历上需要相关项目 or 学历背景

对于很多已经工作的伙伴,学历如果不容易实现的话,可做好项目这一栏。

then:在拉勾网等招聘网站上面找到感兴趣的工作,去看相关工作描述,提取出需求的技能,列入学习清单,学习时间紧时可以挑相关的先重点学。


[step 2: 路线-步骤]

第一步确立方向后,假设你想做人工智能,并且是自然语言处理,以此为例:

入门路线的话,一点我只推荐一个吧,简单不会被吓到,也是我经验觉得比较高效的:

--1.语言:

推荐 python

入门书:learn python the hard way

pkg 教程网站:python scikit-learn

当然还需要 numpy,matplotlib,pandas 等常用包,scikit 是介绍算法多一些,可直接看

--2.课程:

Coursera 上吴恩达的是我觉得比较基础且系统的,但它用matlab,大家可以直接换成 python 去敲代码。Udacity 上的机器学习课程是用 Python 做的。

--3.书:

周志华的西瓜书《机器学习》

--4.自然语言处理基础:

课程:cs224d

如果是图像处理,课程:cs231n

--5.小项目:

数据科学:Kaggle 上很多好玩的比赛,开脑洞+实战

人工智能:建议找个感兴趣的小方向,实际做出来一个,例如做一个自动会创作音乐的小程序

--6.螺旋式升级:

我觉得最有意思的就是在第5步,这期间就会发现还有好多关联东西需要学,所以就边学边战吧


[Tips]

2017 可以给自己定个小目标,一个月拿下一步,升一级,酱紫至多 5 个月后你就可以有自己的AI了。

上面几步,大家完全可以根据自己的喜好,在搜索引擎提供的结果中,选择适合自己的资源和节奏。

我觉得最有效的就是从实战中学习,但是理论也是必不可少的。

每一步先只选一个,适合自己的资源,就开始好好学。

上面只是一小步,离精深还远。

[关于阻碍]

大家担心比较多的问题就是,数学不记得了还能学么?

我觉得,暂时不要紧,可以直接看 scikit,里面有代码的 demo,知道套路可以用,先用上就会很有成就感。

里面文档不懂得,例如哪些参数什么意思呀,怎么调呀,也可以找搜索引擎帮助。

不过面试的话,对模型的原理,推导,细节还是要把握好的。

大家都说成长最快的方式,就是找这个领域的牛人学习。对于这种学习,如果没办法做到直接的,在线的,看他的书呀,听他的课呀,都算是学习。



推荐阅读

历史技术博文链接汇总

也许可以找到你想要的

时间: 2024-12-18 23:09:09

简单粗暴地入门机器学习的相关文章

一步一步入门机器学习之五:机器学习自学指南

事实上有许多的途径可以了解机器学习,也有许多的资源例如书籍.公开课等可为所用,一些相关的比赛和工具也是你了解这个领域的好帮手.本文我将围绕这个话题,给出一些总结性的认识,并为你由程序员到机器学习高手的蜕变旅程中提供一些学习指引. 机器学习的四个层次 根据能力可以将学习过程分成四个阶段.这也是一个有助于我们将所有学习资源进行分类的好方法. 初学阶段 新手阶段 中级阶段 高级阶段 我之所以把初学阶段和新手阶段区分开来,是因为我想让那些完全初学者(对这个领域感兴趣的程序员)在初学阶段对机器学习有一个大

简单粗暴的在vmware虚拟机中固定ip

虚拟机对于很多做测试的或者在学习测试中的人来说是位常客,经常会用到,但是虚拟机重启之后,很多人遇到虚拟机ip变化,很是头痛,我在学习过程中也遇到了这个问题,百度了很多办法,有些办法对于网络知识小白来说难度有点大,还有一些分享的经验都没有奏效,经过尝试,总结了两种简单粗暴,亲测有效的办法,共享出来,遇到的人可以做个参考,尤其是对小白,可以快速解决这个问题,不至于在这种小问题上浪费太多时间,大神可忽略. 首先,首先确定你在.NAT模式下,这时由VM8虚拟网卡提供虚拟机的IP分配,相当于一个小型的DH

LeakCanary:简单粗暴的内存泄漏检測工具

差点儿每一个程序猿在开发的过程中都会遇到内存泄漏.那么我们怎样检測到app是否哪里出现内存泄漏呢?square公司推出了一款简单粗暴的检測内存泄漏的工具-- LeakCanary 什么是内存泄漏? 内存泄漏是指因为疏忽或者错误造成程序未能释放已经不再使用的内存,内存泄漏不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误失去了对于这段内存的控制.因而造成内存的浪费. 内存泄漏和内存溢出是两码事,不要混淆,内存溢出通俗的讲就是内存不够用,如今的仅仅能手机内存越来越大,内存溢出的情况不

SmaterWeatherApi---签名加密和数据访问--简单粗暴一步搞定

使用中国天气网接口的朋友们,大家(还有我)辛苦了 有兴趣的可以去了解一下http://smart.weather.com.cn/wzfw/smart/weatherapi.shtml 年初的时候停用了之前的接口,改为申请使用,于是发个了申请邮件,中间各种曲折...一万字.. 总算是申请下来了,不过接口文档啊,看的我累觉不爱,文档上只有php版的kay生成方法,我在androi上使用,那些加密方法不知道用java如何实现 一怒之下,就写个php版的吧,本来是只想写个生成key的接口的,后来想了想

简单粗暴地理解js原型链--js面向对象编程

简单粗暴地理解js原型链--js面向对象编程 原型链理解起来有点绕了,网上资料也是很多,每次晚上睡不着的时候总喜欢在网上找点原型链和闭包的文章看,效果极好. 不要纠结于那一堆术语了,那除了让你脑筋拧成麻花,真的不能帮你什么.简单粗暴点看原型链吧,想点与代码无关的事,比如人.妖以及人妖. 1)人是人他妈生的,妖是妖他妈生的.人和妖都是对象实例,而人他妈和妖他妈就是原型.原型也是对象,叫原型对象. 2)人他妈和人他爸啪啪啪能生出一堆人宝宝.妖他妈和妖他爸啪啪啪能生出一堆妖宝宝,啪啪啪就是构造函数,俗

一个简单粗暴的前后端分离方案

项目背景 刚刚参加完一个项目,背景:后端是用java,后端服务已经开发的差不多了,现在要通过web的方式对外提供服务,也就是B/S架构.后端专注做业务逻辑,不想在后端做页面渲染的事情,只向前端提供数据接口.于是协商后打算将前后端完全分离,页面上的所有数据都通过ajax向后端取,页面渲染的事情完全由前端来做.另外还有一个紧急的情况,项目要紧急上线,整个web站点的开发时间只有两周,两周啊!于是在这样的背景下,决定开始一次前后端完全分离的尝试. 之前开发都是同步渲染和异步渲染混搭的,有些东西可以有后

从零单排入门机器学习:Octave/matlab的常用知识之矩阵和向量

Octave/matlab的常用知识之矩阵和向量 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误,敬请指导. Andrew的课程选了Octave/matlab为编程语言.他选择这个估计更多是考虑大众性,这门语言容易入门. 然后我觉得学会使用Octave/matlab还是挺有用的.一来是她天生是个数学工具,开始的研究阶段使用她最方便莫属,注意我这里所说的是研究阶段,商用

从零单排入门机器学习:OctaveMatlab的常用知识之画图

OctaveMatlab的常用知识之画图 之前一段时间在coursera看了Andrew ng的机器学习的课程,感觉还不错,算是入门了.这次打算以该课程的作业为主线,对机器学习基本知识做一下总结.小弟才学疏浅,如有错误,敬请指导. 看几个例子即可. 'ro'的含义,r表示红色,o表示o形. 可以记住某些常用的选项. 一条命令画两条线.其实可以多条. 一般来说,用户在新输入plot 命令之后,原图片上的内容将被删除.如果你想保存当前的图片内容并将新创建的图片层叠到原图片上,你可以通过使用hold

足球游戏论坛数据分析--简单粗暴的K均值聚类

在<<足球游戏论坛数据分析--简单粗暴的贝叶斯>>中尝试了贴标签后,一直觉得结果无法接受, 慢慢回想, 其实选择的算法是错误的,原因有 论坛帖子分类并非就是PC/PS/XBOX这么简单 即使是作者自己贴的标签,也存在挂羊头的可能性 既然没法简单的给帖子分类,那么就尝试一下聚类算法看看有没有发现: #事先已经把分好词的所有文本存成一个文件,没有事先分类 f = codecs.open('forum_all.txt', 'r', 'utf-8') words_full = f.read