PYTHON - 人工智能之路

写在最前面的话:

我,本科,自考计算机科学 - ing。

对于人工智能(AI),说说我最真实的感受,我很少跟身边的人说过,就是真的太孤独了,太孤单。

所有的工作室、俱乐部和赛事你都会发现,你只有一个人(这个表述其实不准确,显得很自我太狭窄,但确实有的时候这就是我最直观的感受),这种感受充斥于生活的每一天,每一次瓶颈。

从2020年9月中旬开始,我就进入了完全投入身心的自学状态,直到现在写下这篇文章的时候已经过去了三个月左右的时间了,除开上自己的专业课时间,在剩下的零散时间内,我从零基础(可能吧......)开始完成了:

  • 学习编程,主要掌握了Python,跟着课程也学习了C/C++,HTML,CSS,Javascript,JQuery,Go,Java,JSP,JDBC,TCPip,Linux,Mysql,Redis,Django,Docker等等,就学习了yi点点的知识。
  • 学习过了数据科学的理论方法和编程知识,如:Pandas,Numpy,Matplotlib等。
  • 学习数分基础和线代基础,给自己安排了一整套的教程从数分到泛函分析。
  • 学习了深度学习神经网络的小项目:手写数字识别,花卉识别等。

对于一个自学者来说,现在真的是一个非常幸福的时代,在网上就可以免费学到各个名牌大学的精品课程和各种培训机构的全套安排课程,如果不是非要那一张文凭,其实我完全都不想去自考一个计算机科学。但是一路走来欠缺大量的经验,学习计算机也快有二年了,确实也走了不少的弯路。所以,如果有人也想像我一样走上自学的道路,希望我的经验可以作为你未来成功的一个参考。

在这片文章中,我也会尽量完整地介绍我真实的学习过程,并且根据学习效果总结出学习心得,希望能让像我这样的初学者少走些弯路。

根据我自己的学习路程所写,没有什么太难或者晦涩难懂的书籍,学习过程也会循序渐进,同时也没有杂七杂八的东西,一切从简,截至2020年12月15日,这里推荐的都是比较适合新手的,如果还有更好的选择,会及时去更新

PS:如果着急证明自己,那么就不得不直接上手ML/DL相关的项目了;如果处于新生时期,有足够的时间,那么我也建议你先学习好数学基础知识,后续再涉猎ML/DL。

1.基础版(数理要求低)

数学基础

  • 概率论(我是学习自考课程中的概率论的)
  • 数学分析(高等数学,《普林斯顿微积分读本》入门,随后看数学分析进阶)
  • 线性代数(汤家凤讲义)

ML/DL基础

  • 神经网络和深度学习
  • 李宏毅 机器学习

理论知识

  • 统计学习方法
  • 大数据学习
  • 机器学习

2.编程知识

PYTHON 编程基础

  • 语法
  • 常用函数
  • 常用模块
  • Linux
  • 数据库(MYSQL,REDIS,Mongodb......)
  • WEB(三件套,vue,DJANGO......)
  • 机器学习基础包(Numpy,Matplotlin,Jupyter......)

人工智能基础阶段

  • 机器学习算法(KNN,线性回归,KD数......)
  • 大数据(Hadoop,sparksql......)

人工智能

  • Pytorch
  • Tensorflow
  • 爬虫
  • 数据分析

3.细分领域

  • 自然语言处理
  • 文本数据挖掘
  • 推荐系统
  • 语言识别
  • 语言合成
  • 姿态识别
  • ......

从零开始学习Machine Learning的全过程

首先我按照自己的学习时间顺序写出,

顺表介绍自己在自学过程中的所有参考课程及其资料。

在开始之前必须要说明一下我自己的情况:

  • 课程的心得全是自己在上完或者上了部分课程之后所得的
  • 学习时间是从空闲时间挤出来的,平时时间确实不多,一周7天,每天可能就只有晚修有一两个小时学习,但是就这一两个小时的时间,我就可能需要同时完成多个课程的学习。
  • 我是喜欢看电子书学习的人,所以前期在寻找电子书和寻找合适的课程的时候是浪费了很多的时间...走了很多的弯路,最后发现还是寻找合适的课程学习好,能够把自己安排的明明白白的。

1.入门阶段(9月中旬至10约中旬)

这个阶段最开始是最盲目的,因为对这个专业领域的东西一无所知,也没有前辈可以指点迷津,所以基本就是一个盲人探路的阶段,而且在这个阶段也是最迷茫的阶段,毕竟情况特殊,自己本身就是非CS专业出身的,一周可能会有6天都会在质疑自己最初的决定,是不是正确的,或者说,好好学自己专业,下课了复习一下回宿舍就打游戏他不香吗?

但是还好在这个踩坑最多的阶段,我坚持了下来,基本很是难受,天天网易云......

  • Python编程基础
  • Linux基础和高阶
  • 数学基础和DL的一些基础算法

2020黑马Python5.0 - 人工智能就业班【阶段一】

其实一开始我是不知道那个课程好的,我自己找课程的时候是直接百度的,但是百度嘛.......万恶之源,所以我是在百度网盘资源搜索引擎搜索的,但是搜索到的课程质量非常的差,所以我就上培训机构找课程,然后搜索他们的流出的课程资源,后来就找到了这个课程,我个人在看了一段时间后觉得非常的好,很是推荐!!!

入门的门槛其实很低,而且后续的实用性也很不错,比较推荐初学者学习。

学习时间:约一个月(一天8小时学习)

初学者推荐度:5※

1.1Python基础语法

  • 开发环境搭建
  • 变量和数据环境
  • 流程控制语句
  • 字符串
  • 字典和集合
  • 公共方法
  • 推导式
  • 函数基础
  • 高阶函数
  • 递归和匿名函数
  • 内置函数
  • 闭包
  • 文件操作

1.2Python面向对象基础

  • 面向对象基础
  • 面向对象进阶
  • 装饰器
  • 异常
  • 继承
  • 多态和类方法和类属性
  • 模块和包

1.3Linux命令(基于Ubuntu)

  • 基础命令

    切换目录、文件操作、ls、重定向等

  • 高级命令

    软连接、硬连接、文件搜索、查找文件、压缩解压缩、文件权限、获取管理权限等

    远程登录、vim、软件的安装和卸载、管道等

1.4Python多任务编程

  • 线程
  • 进程

额外

这个阶段是需要学习一些数学基础的,推荐你学习《普林斯顿微积分》

2.Web阶段(11月份至今)

这个阶段的我已经不是很盲目了,有了一定的方向,对于这个专业领域的东西有了一定的认知,所以这个阶段的学习其实已经快了很多了,虽然还是有点迷茫,但是万辛在这个阶段,立新默默的成立了Python(小声密谋)小组,为了给这些比我更小的青年人,能扫清前路的方向,我只能更加的努力,睁大眼睛看清前路,为这个小小的团队,同时为了自己......

2020黑马Python5.0 - 人工智能就业班【阶段二】

这个阶段的课程还是跟进黑马的就业班,这个是我觉得是python的一个非常不错的课程,因为他直接把你安排的明明白白的,直接就明白了全部的路线,死心塌地的把这个学完,我觉得至少可以称为一个入门的开发者了。

这个阶段的门槛其实也很低,但是最好前面的东西要学好,因为这个阶段的节奏就比较快了。

学习时间:约两个月(一天8小时学习)

初学者推荐度:5※

  • Web服务器

    网络编程基础、http协议介绍、web服务器

  • Web前端开发

    html、css、JavaScript、jQuery

  • Mysql数据库

    增删查改、高级查询、高级操作、python与mysql交互、事务索引

  • mini web框架

    闭包、装饰器、mini框架、生成器、正则表达式

  • django框架

    redis安装配置、redis数据类型、高级、django模型、请求和响应、会话和视图、模板、git、vue

  • 商城

    用户模型、注册前后端、图片验证码、短信验证码、异步发送、第三方登录、用户中心、商品数据库设计、商品数据、商品首页广告、商品搜索、商品列表、购物车、订单、支付宝、性能优化

  • DRF框架

    REST框架、序列化和反序列化、视图、vue

  • 商城后台

    管理员登录、数据统计、用户管理、商品管理、订单管理、系统管理

  • 项目部署

    nginx、docker、部署

  • flask框架

    flask工程、路由和蓝图、请求和响应、上下文

  • 立新头条

    数据库设计、SQLAlchemy、数据库优化、redis、git工作流、JWT、OOS对象存储、缓存、APScheduler定时任务、RPC、即时通信、单元测试、部署

3.人工智能阶段(至今)

这个阶段才是Python - 人工智能之路最有挑战性的一条道路,但是很庆幸,我觉得我们应该选择了正确的道路,但是我们也要清楚的认识到,这条路其实并没有走到末端,仅仅只是入门而已,在这个最艰难的阶段,希望我们能一起度过这个阶段吧......

2020黑马Python5.0 - 人工智能就业班【阶段三】【阶段四】

其实还是这个课程,然后我们后续会有更加好的课程,但是那个是细分每一个领域的人工智能课程了,这个课程已经可以让我们很不错的入门到人工智能这个领域,所以他是一个很不错的课程,加油吧!

这个阶段的门槛可能比较高一点了~

学习时间:约一个学期(一天8小时学习)

初学者推荐度:5※

  • 人工智能基础

    机器学习、matplotlib、numpy、pandas、knn算法、线性回归、梯度下降、欠拟合过拟合、逻辑回归、决策树、集成学习、聚类算法

  • 推荐系统基础

    推荐算法、Hadoop、Hive、HBase、Spark core、Spark sql、Spark streaming、推荐系统

  • 头条推荐系统

    框架、用户画像、实时计算、推荐业务、深度学习、Tensor flow、排序模型

  • Python测试

    手工测试、web自动化测试、接口测试、性能测试、移动测试

  • Python运维

    Linux、vim、用户管理、ssh、apache、shell、iptables、lvs集群、lvs调度、lvstun实践、keppalived集群ansible安装、playbook、nagios、远程监控

  • NLP自然语言处理

    深度学习和神经网络、pytorch、梯度下降和反向传播、PytorchAPI、优化算法、数据加载、手写数字识别、RNN、Chatbot、意图识别和文本分类、Seq2seq、attention原理、beamsearch、自然语言处理

  • 深度学习与机器视觉

    深度学习、神经网络、卷积神经网络、商品检测、YOLO、SSD、商品检测数据集训练、模型导出和部署

  • 爬虫

    requests、数据提取、selenium、反爬虫和反反爬虫、MongoDB、scrapy、scrapy-redis、appium

  • 数据分析

    PowerBI、SPSS、tableau、概率论、统计学、SPSS、fineBI

推荐学习路径

总结现在的学习过程,最主要踩到的坑就是在理论上纠缠了太多的时间而忽略了实践的重要性,有时候甚至会看着一个函数的实现原理而浪费了一个中午的时间,所以如果你的目的只是快速的了解这个领域的话我会推荐一下学习路径。

1.快速上手编程

编程是一切实现的基础,但也并不是一定要学的很深入,什么深入了解Python解释器实现原理和数据结构等等才可以开始学习Deep Learning.

所以其实建议在学习之前一定要快速的刷完Python的基本语法,达到可以简单编写程序的水平即可了。然后就上手其他的一些东西,比如说Web,然后需要花点时间学习Numpy,Pandas,Matplotlib这类的数据科学库的使用方法等等。

在我们学习的过程中,Baidu,Bilibili,Google都是你最可爱的朋友哦~

2.直接上手Demo

直接上手深度学习上面的一些项目(手写神经网络,识别手写数字,花卉识别),能够快速地让你从应用的角度去理解Deep Learning的技术原理。

先从整体上了解这项技术的功能 ,在深入理解技术内部的原理是个不错的方法。

写在最后

在最后我必须再讲讲与编程无关的东西 - 英语,很多人可能认为编程都是用英语编程的,所以

是不是要学好英语?背这些英语单词?并且觉得我能学号这些东西,我的英语水平是不是很高?

但是实际上我的英语水平一直都是中等水平,大概从进了SIT后就很少学习过英语了。

但是直到我学习编程,并且经常Google一些关于AI的资料,但是发现其实很多的资料都是用英文记载的,就比如说英伟达的开发板的一些教程和关于引脚设定,开机配置等等的这些资料都是在官网和YouTube上才有的,这都是非常值得利用起来的资源。

所以英语确实就如同打开了一扇大门一样,能为自己学习的过程提供更多的方便

说了很多,听起来很有经验,但其实我也依旧在学习的路上,在半年前的我,也如同现在的各位,甚至对AI的理解都还停留在电影的层面会思考的机器,非常的神秘和高级,感觉这些东西毫不可及,只是停留在研究室里面学习的知识。现在想起来都觉得好笑,这一切的一切都不过是数据科学的力量,相信我,了解AI,就是在了解自己。

相信自己能学会并且付诸努力,明天的自己会感谢现在的自己的。

Q.E.D.