心得| 想入行 AI,别让那些技术培训坑了你...

本文来自作者 李烨 在 GitChat 上分享,本处作了不改变原意的删减!

引子

IT 行业发展迅速,各种新名词此起彼伏。身处这样一个热点行业,学习是必须的。不打算成为终身学习者的程序员,失业就在明天。

可是,怎么学呢?

自学的困境

如今,网络资源那么发达,IT类技术都不难找到各式各样免费或费用很低的书籍、资料、课件、讲座、代码。从理论到实践都有讲解。

如果想要自学,是完全有条件的,那为什么还要去上培训班呢?原因大概有一下这些:

•    直接原因:精力分散,不够专注,书读不下去,代码看不下去。
•    深层原因:驱动力不足以让自己专注。
•    根本原因:没有足够渴望的目标,无法调动自身能量形成驱动力。

其实归根到底,学不下去是因为不知道学习是为什么,学了到底有什么用。漫无目的的学习注定是浪费时间。

有效学习三要点:目标明确,系统性强,足够深入。三者缺一不可。

明确学习目标

好在读本文的同学,已经共同拥有了一个优势:目标明确。

我们学习的目的是为了入行AI!

在明确目标的指引下,比较容易找到什么“有用”——虽然有点功利,但不得不承认,“有用”与否是大多数人产生驱动力的重要所在。

我们可以以“在AI领域找到技术岗位工作”为基准,进行学习。避免东一下,西一下的“乱学”。

什么样的目标才算明确
但是要注意,这个目标如果仅仅停留在:“我要做AI”,是不能称之为一个目标的。真正的目标必须具有可实施性,并最终体现为实施计划

想要入行AI,先搞清楚几件事:

  • 目前真正落地的AI领域都有哪些?

  • 每个领域有什么样的代表企业?

  • 这些企业中,都有什么样的技术岗位?

  • 每种岗位哦需要什么入门条件?

至少要能够定位到你的目标岗位,明确了这个/类岗位的技术要求,才有可能确定需要学习的内容有哪些,从而选择到正确的培训课程。

如何划定明确的目标

但是怎么能知道这些呢?笔者个人推荐如下调研步骤:

Step 1. 先确定一个领域(图像、语音、NLP等等)

可能你本来就有特别感兴趣的领域;或者你对某一种技术,比如人脸识别,特别兴趣,那么可以直接由此入手。

如果你本来对AI了解不多,只是想做当前市场上最热门的领域,那也比较好办。多爬一些招聘网站、职场社交媒体的招聘信息,做一下数据分析,看看哪些领域招的人最多,薪水最高。

Step 2. 了解本领域当前的科研状况

最简单的方法:找十篇本领域核心期刊或会议的论文,读一遍。

用Google找论文还是比较赞的,而且相关度排序综合了论文的成果贡献,作者的学术地位和新颖度。

如果方便用Google,直接输入领域相关keyword,取前3-5篇拿来读。读后再根据阅读中遇到的问题、产生的兴趣回溯寻找其引用文献,或者重新搜索。

Step 3. 了解本领域理论的落地技术以及相关企业

AI作为一个新兴方向,很多领域还处在研究阶段,真正能够应用到现实产品中的领域相当有限。

有代表性不过就是:语音识别/合成,图片/人脸识别,和NLP的一些分散应用。

Step 4. 了解具体岗位的招聘需求

这里的具体岗位,到并不一定指XXX公司的XXXX岗位,而是指同一类型公司同一技术角色的相对普遍要求。

AI行业的技术岗位,按角色可以简单地分为三类:

角色1:科学家——研究理论,开发/改进算法;
角色2:工程师——结合业务,训练模型;
角色3:工程辅助——选择、清洗、标注数据等。

制定学习计划

有了明确的目标,也就有了明确的范畴(scope)。同时,经过上节step2-4,还搞明白了,学了这些东西,能用来干什么,最终会把它用到什么场景中去。

很多人在制定学习计划的时候,会从时间出发。但是如果没有内容,光指定时间是没有意义的。学习计划的最初步应该是知道要学什么。具体步骤可以这样来走:

  1. 明确知识范畴和应用目的;

  2. 划定知识体系并确定深度目标;

  3. 填充知识模块;

  4. 列举针对具体模块的主要知识点。

可以借鉴做作文列提纲的办法:在勾勒出轮廓之后,先把知识结构的骨干勾勒出来,分为篇章,列出大标题,再在其中填注小标题(知识点)。

我们下面用一个例子来说明一下具体从目标到学习计划的制定过程。

【举例说明】

从需求出发:笔者要学习基于机器学习的自然语言处理,具体的应用是开发聊天机器人的语言理解模块。

进行调研:通过 i) 向有类似经验的同事请教; ii) 到网上搜索综述性文章和 NLP 领域论文;iii) 查找实践类的文章、类似开源项目……等一系列手段,笔者了解到,最起码有两件事情必须要做:意图分类和实体提取。

目前,要做这两件事情,有基于规则和基于机器学习/深度学习模型两类方法。

基于规则虽然直接、初始代价小,但是可扩展性差,所有规则都需要人工添加。

机器学习和深度学习的区别在于:前者适合相对数据量、运算资源较小,而开发者对业务理解较深的场景;后者则更加“自动化”,但对于数据量和运算量需求巨大,尤其是对人工标注的数据要求很高,先期投入太大。

笔者决定在工作用应用机器学习模型,因此就要先从机器学习学起。

目标确定:根据调研,确定了目标为机器学习。

接下来第一步就是了解“机器学习”的学科框架。

很多学校计算机专业的都开设机器学习课程,找到相应的教学大纲和课本并不难。通过高等院校的教学大纲和课本目录来了解一个学科体系,普遍而言是最靠谱的方法。

机器学习有一点特殊的地方——有一位大牛,Andrew Ng,在几年前就发布了一份免费网上课程叫做“机器学习”。因其经典和学术上的严谨,也可以用来作为了解机器学习体系的一个来源。

构建体系:通过对比多本机器学习著作,不难发现,机器学习理论是以一个个模型为主要内容的。

之前工作中要用到的意图识别和实体提取,正好对应分类和seq2seq预测模型。而为了获取意图,可能还需要对原始语料做文本聚类。

因此我们构建的体系可以以模型为主要节点。

填注内容: 确定了主干节点,下一步就是填注课程的“血肉”。

归根到底,模型是用来解决问题的。比如 chat bot 语言理解所用到的分类,序列预测,聚类等,都是典型的机器学习问题,每一个问题都对应多个模型。每一个模型都有其适用的具体情形。

模型的获得包括算法和数据两个方面。需要一个训练过程,训练过程一般迭代进行,期间要做多次验证,根据验证结果调优,最终通过测试来检验模型质量。

再通过进一步查询资料得知,要了解这些模型的运行原理,就得读公式,那么就需要求导、求微分、求积分、矩阵运算、概率统计等方面的知识。

还有就是,所有模型处理的都是数值,我们要把现实当中的文本等人类可读信息都转化成向量。这就需要掌握将文本转化为向量空间模型的能力,和数据清洗整理的能力。这些能力又都是以编码能力为支撑的。

制定提纲:由此,我们学习计划体系就已经有了眉目。

我们需要学习(复习)下列这些知识:

1)高数、线代和概率论的知识;
2)选择一批在实践中应用较多的典型模型,学习其原理、数学推导过程和训练模型的算法;
3)模型的训练、验证、测试过程和评判模型的指标;
4)将人类可读信息转化为数值的方法;
5)训练、测试模型的工具、框架和编程语言。

学习计划成型:有了上面这些,再结合资料和自己当前需求,确定必学范畴内的模型类型,就可以构建详细计划了。

“机器学习”学习内容提纲:

A. 数学
 a. 数学分析:求导、微分、积分
 b. 线性代数:向量基本运算,矩阵基本运算,矩阵分解,多种矩阵的性质
 c. 概率统计:古典概率模型,贝叶斯公式,常见概率分布及其公式和特点

B. 模型原理及公式
 a. Linear Regression(最小二乘法)
 b. Logestic Regression(极大似然估计)
 c. Naive Bayes
 d. Decision Tree(ID3, C4.5)
 e. SVM
 f. CRF
 g. KMeans
 h. Spectral Clustering
 i. LDA

C. 模型的构建和验证
 a. Binary-Classification vs Multi-Classification
 b. Normalization & Regularization
 c. Validation & Test
 d. Cross Validation Methods
 e. Precesion, Recall, F1Score  f. ROC, AUC

D. 数据处理和向量模型空间的构建
 a. 文本标注
 b. Bagging & Boosting
 c. 中文分词方法及原理
 d. n-gram模型原理
 e. bi-gram文本特征提取
 f. 计算文档tf-idf 及其信息熵

E. 工具及语言
 a. Python,Java,C#类比及对比
 b. Python 库,Java 库,C# 库
 c. 分词工具(jieba分词)和词库
 d. word2vec

F. 实践

如上只是第一个版本,可以先依据它制定一个为期两到三个月的学习计划。在执行过程中,根据新的认识和具体需要可随时调整提纲和计划。

选择培训课程

本文的主题就是如何选择技术培训,居然前面废了那么多话才说到选择培训课程,是不是已经有朋友等不及了?

选课容易选对难

或者有的朋友觉得,选培训课有什么难的?现在互联网信息这么发达,就把培训课当餐馆电影院一样选又有什么不好?

大众点评里有好多培训机构培训班呢,上去看看评价,看看星级,还有优惠券拿,直接选一个不就行啦。何必还要自己定制什么学习计划,多此一举。

此处笔者想说的是:选择培训课程容易,选择有效的培训课程可就难了。

如果选择了错的培训课程,浪费钱还是小事,浪费自己的时间才可惜。

培训的用处

AI行业的知识、技术,包括各种工程实践,best practice,都是纯粹的书面知识。

不像乐器、舞蹈之类,文字不足以描述,需要老师面对面指导和反复多角度演示才能掌握到位的技能;书面知识,肯定是可以自学的。

对于这样的知识,培训课程的作用何在?

上培训课的原因很简单:为了省事——自己学太累了,不如听老师讲。用耳朵听,比用眼睛看书轻松,而且老师讲得,总比书上写的丰富细致吧。

学习的过程,必须学习者主动吸收理解,才能达到掌握知识的目的。

而培训课程的作用,无外乎两点:

I. 讲解细致

相对于力求清晰、简洁、逻辑性强,具有“攻击性”的书面资料,合格的课堂讲解应该是丰富、细腻、包容性强,具有“防守性”的。

特别是和数学相关的内容,那些公式推导过程,往往一步千里,如果有人能够给每一个前进步骤一个解释,理解起来会比自己看轻松好多。

II. 和教师直接交流,获得即时反馈(答疑)

学习复杂的东西时,常有这样的体验:

  • 前面一大段都会,就是绊在一个点、一句话上,这一点东西不明白,后面的全都不懂。

  • 自己的理解明明是这样的,可是习题答案却是那样的,是自己学错了,还是习题答案印错了?

  • 这种情况应该这样,那么那种情况呢,也这样还是另有不同解法?

拿着自己的学习计划去找培训,能在大概率上保证培训课程的有效性。

因为:

1)制定计划的过程,是一个带着问题探索的过程,而“带着问题”很容易产生驱动力。

当自己有疑问要解答的时候,就会有探索、学习下去兴趣和好奇,不至于看见那些东西就想睡觉。

2)对照自己制定的学习计划寻找满足内容需求的课程,有助于独立判断培训课程和培训教师的“斤两”。

3)制定计划也是一个了解自己的过程。

知道自己现在缺什么,缺到何种程度。同时对照培训课程大纲和介绍,也可以辨识自己目前知识背景和培训课程深度是否匹配。

搜寻有效培训的途径

现在我们已经有了一份自己定制的详细学习计划,而且也明白了按图索骥的重要性。下一步就要寻找具体的培训课程了。

对找寻过程,笔者的建议是:先从免费资源开始

1)首先,AI领域有少量非常经典的现在培训课程,是完全免费的,而且非常容易找到。

2)其次,通过书籍、文章、论坛、微信/QQ群、免费讲座和分享等渠道,去搜集大家的学习经验和各种培训班的信息。

3)然后,在尽量广泛地收集了大量培训信息后,对照课程大纲和自己的学习计划进行选择。

教师声誉、培训机构声誉、网友评价等可以作为参考和背书,但核心是课程大纲与个人计划的匹配度!

4)再次,按优先级裁剪个人计划。

当然,想找到和最初版本计划100%匹配的培训课程基本是不可能的(除非的你的计划就是照着某个培训课抄的)。

这就不能不涉及到对于个人学习计划的裁剪。裁剪的原则应该是:确保核心知识和大体结构,在细节上做出妥协。

但是如果大致结构和计划一致,只是有部分细节(例如模型类型)和你自己最初计划不同,则可以再进一步考虑。

有效学习的几点提示

分享几个笔者认为行之有效的日常学习Tips。

关联

把新学到的东西和日常的工作、生活联系起来,进行思考。比如:将理论代入现实,不同领域间事物的类比,相似内容的对比等。

以身边的实例来检测理论。不仅能够加深理论知识的理解,而且有助于改进日常事物的处理方法。

记录

准备一个笔记本,纸的或者电子的。有什么发现、感想、疑问、经验等等,全都记下来。

如果是对某个话题、题目有比较完整的想法,最好能够及时整理成文,至少记录下要点。

隔一段时间后把笔记整理一下,把分散的点滴整理成块,一点点填充自己的“思维地图”。

分享

知识技能这种东西,学了,就得“得瑟”——把学习到的新知识、理论、方法,分享给更多的人。如此一来,倒逼自己整理体系、记忆要点,堪称与人方便自己方便的最佳实例。

把自己的感想、体会、经验分享出来也是同理,还多出了锻炼自己逻辑思维能力和归纳总结能力。一举多得,何乐而不为?

定制知识速查手册

这一点算是针对AI方面学习的专门建议吧。

AI涉及到的数学特别多。很多数学问题,之所以让人头大,其实并不是真的有多难,而是符号系统比较复杂,运算繁复,或者运算所表达的物理意义多样。

如果把常用的细小知识点都记录下来,按主题整理在一起,做成速查手册(小字典),需要用的时候迅速查找一下对应点,效果往往意想不到地好。能让我们的学习“机器学习”之路顺畅不少。


  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 作为Java程序员入行人工智能,你需要了解有关机器学习和深度学习的基础知识,并学习如何使用相应的框架和库来实现它们。此外,你还需要学习如何使用Python,因为大多数人工智能框架和库都是用Python编写的。 ### 回答2: 要成为一名Java程序员并从事人工智能(AI)方向的工作,可以采用以下步骤: 1. 学习基本的Java编程知识:作为一名Java程序员,首先需要建立扎实的Java编程基础,包括Java语言的核心概念、面向对象编程等。 2. 学习机器学习和人工智能的基础知识:了解人工智能的基本概念、机器学习和深度学习的原理、算法和应用场景。可以通过学习相关的在线课程、参加培训班或阅读相关书籍来增加知识储备。 3. 掌握常用的机器学习和人工智能工具和库:Java作为一门广泛使用的编程语言,在人工智能领域也有一些强大的工具和库,如Weka、DL4J、DeepLearning4J等。学习并熟练掌握这些工具和库,可以帮助开展AI相关的项目。 4. 参与人工智能项目:通过参与开源人工智能项目,或者在公司中参与AI项目开发,可以积累实战经验,并通过实际项目来发展和提高自己的技能。 5. 持续学习和关注最新的人工智能技术:由于人工智能领域发展迅速,新的技术和算法层出不穷。要保持对最新的人工智能技术和发展趋势的关注,不断学习和更新自己的知识。 6. 参加相关的培训和认证:参加人工智能相关的培训和认证课程,如机器学习、深度学习等的认证培训,可以提升自己的竞争力,并有助于进一步发展职业道路。 总之,想要从事人工智能领域的工作,Java程序员可以通过学习基础知识、掌握工具和库、参与项目、持续学习和关注最新技术等方式来入行并提升自己的技能和竞争力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值