程序员的自我修养——“上岗ML前”必知的5件事
点击上方关注,All in AI中国
作者——Kimberly Cook
如果你想成为一名优秀的程序员,那么你必须了解算法和逻辑。这也是为什么程序员一直都是机器学习领域的理想人选。那么,如何开始我们的机器学习之旅呢?首先,你需要调整你的心态,这并不难学。想象一下,当你第一次接触到编程的时候,它看起来一定很困难,但是随着你的努力,它变得容易了。机器学习也是如此。
在本文中,我将讨论程序员在开始机器学习之前应该知道的5件事。现在让我们从机器学习的简要介绍开始。
机器学习是人工智能的一个子集。它使IT系统能够在现有数据库和算法的基础上识别模式和开发解决方案。它是由经验产生的准人工知识。从数据中获得的见解可以推广,并用于新问题的解决方案或新数据的分析。
机器学习是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
好了,现在回归正题。在开始机器学习之前,程序员应该知道的5件事。
1.机器学习是如何工作的?
为了让一个软件能够独立学习并找到解决方案,我们必须事先采取行动。例如,系统必须首先提供与学习相关的数据和算法。此外,还必须建立分析数据存量和识别模式的规则。如果有匹配的数据并定义了规则,机器学习系统可以:
- 查找、提取、汇总相关数据
- 根据所分析的数据进行预测,
- 计算特定事件的概率,
- 基于已识别模式进行流程优化。
2.不同类型的机器学习算法
算法在机器学习中起着核心作用。它们负责识别模式和生成解决方案,并可分为不同的学习类别。下面是机器学习算法的基本类型:
- 监督学习
- 无监督学习
- 半监督学习
- 强化学习
- 主动学习
其中,监督学习方法是目前研究较为广泛的一种,例如神经网络传播算法、学习算法等已在许多领域中得到成功的应用,但是,监督学习需要给出不同环境状态下的期望输出,完成的是与环境没有交互的记忆和知识重组的功能,因此限制了该方法在复杂的优化控制问题中的应用。
无监督学习目标是我们不告诉计算机怎么做,而是让它(计算机)自己去学习怎样做一些事情。一般有两种思路。第一种思路是在指导代理时不为其指定明确的分类,而是在成功时采用某种形式的激励制度。需要注意的是,这类训练通常会置于决策问题的框架里,因为它的目标不是产生一个分类系统,而是做出最大回报的决定。这种思路很好的概括了现实世界,代理可以对那些正确的行为做出激励,并对其他的行为进行处罚。
虽然监督学习需要通过示例模型的定义和规则来将信息与算法的模型组匹配,但无监督学习并不需要,因为它的模型组是基于独立的识别模式自动生成的(链接:https://en.wikipedia.org/wiki/Supervised_learning)。
半监督学习是两种方法的"混合"。鼓励学习是基于奖励和惩罚措施的。这种交互作用告诉算法如何应对不同的情况。这种学习与人类的学习非常相似(链接:https://en.wikipedia.org/wiki/Semi-supervised_learning)。
最后,主动学习为算法提供了获取特定输入数据所需结果的能力。为了使问题的数量最小化,算法本身预先对与结果具有高度相关性的问题进行了选择(链接:https://en.wikipedia.org/wiki/Active_learning)。
根据特定系统的不同,数据库可能是脱机的或联机的。可以是重复使用的,或是只能用于一次的。机器学习的另一个显著特征是输入和输出相互分离又交错发展。根据类型的不同,它被称为批量学习或序列学习(链接:https://en.wikipedia.org/wiki/Online_machine_learning)。
3.机器学习的应用
机器学习有非常广泛的应用。例如,在网络环境中,机器学习的功能如下:
- 独立侦测垃圾邮件并进行过滤
- 数字助理与语音和文本的识别
- 根据关键词进行网页搜索
- 对人与人工智能的网络活动进行检测与区分
- 其他机器学习应用程序包括图像和人脸识别、自动推荐服务或信用卡欺诈自动检测等等。
4.大数据是机器学习的驱动力
大数据技术领域的发展也给机器学习带来了巨大的推动。由于机器学习中必须存在大量的数据,并且必须进行有效的处理,大数据系统成为这种学习的理想基础。使用大数据,我们可以对结构化数据和非结构化数据进行快速分析,而且硬件投入相对较少。在机器学习方面,使用分布式计算机结构,能更快的提高我们的效率。
5.如何开始机器学习之旅?
如果你想成为Android的开发者的话,有许多框架和编程语言可供选择。我猜你要选择对你来说最好的东西并不容易,机器学习也是如此。机器学习有很多框架、编程语言、工具和课程。你需要掌握一些可以用于机器学习的编程语言和工具。