AI
AI 实际上是两个独立的概念:
- ANI(弱人工智能),用 AI 做一件事,比如智能音箱或自动驾驶或网络搜索或在农业和工厂中的应用
- AGN(强人工智能),它可以用来做任何事情,甚至可能超过人类
和传统编程对比
如果想判断人脸,传统编程需要精心编写硬编码规则,才能识别人脸。而机器学习则从例子中学习,如果在机器学中编写一套规则是徒劳的,如果用机器学习,为每个图像都写下一个预期的答案,然后利用机器学习技术摸索一套规则,经过机器学习技术正确训练的规则,这比编写一套规则要好得多
机器学习包含两个重要阶段:
- 训练阶段:输入数据训练出模型
- 推理阶段:用模型为新的数据输出答案
基于训练数据和模型架构,在训练阶段中,机器可以习得数据与答案之间的转换规则,并将其封装在训练好的模型(trained model)中。这个过程将规则的蓝图作为输入,并且对其进行改变(或微调),让模型输出的结果越来越逼近预期结果。根据训练数据的多少、模型架构的复杂度和硬件的快慢,这一训练阶段会持续几毫秒到几天。这种机器学习方式,也就是用带标签的样例来逐步减小模型输出误差的方法,叫作监督式学习(supervised learning) 。绝大部分深度学习算法属于监督式学习。一旦有了训练好的模型,就可以将习得的规则应用到新数据上了(包括训练阶段没有出现的数据)。以上就是第二阶段,即推断阶段(inference phase),这一阶段相较训练阶段计算量较少,主要有两个原因:第一,推断阶段通常每次只针对一个输入(比如图像),而训练阶段则需要处理所有的训练数据;第二,在推断阶段,模型自身不会有任何变化
通识
机器学习
最常用的机器学习是学习如何从输入到输出的映射,这也被称为监督学习,比如输入一封电子邮件,并且输出表示是或不是垃圾邮件,这就是用于构建邮件筛选器的 AI 核心思想。输入一段音频,并且输出音频对应的文本,这就是语音识别。输入中文,并输出其它语言的翻译,这就是机器翻译。包括输入用户特征,向用户推荐感兴趣的广告,这就是推荐系统
监督学习的概念其实已经存在很多年了,但它最迅猛的发展还是在近几年,比如即使提供了很多数据,也不会导致想要的输出更精确,而 AI 真正的飞速发展得益于神经网络和深度学习的兴起。有了这些技术,才会导致提供的数据让 AI 性能更好
想要 AI 性能更强,更准确,需要以下几点:
- 拥有大量数据,多多益善
- 训练一个非常大的神经网络
数据
数据或者被称为数据集,比如有个想要给某个房子定价,可能会收集以下数据:
大小(平米) | 卧室数量 | 价格(1000 人民币) |
---|---|---|
90 | 2 | 612 |
110 | 3 | 752 |
129 | 3 | 876 |
200 | 4 | 153 |
如果想构建一个 AI 系统帮助设置房子的价格,可能把输入设为房子的大小,输出设为房子的价格,然后让 AI 去学习。但有可能不仅仅根据房子大小来定价,而想要根据卧室数量来定价,这时,输入就是房子大小和卧室数量。所以给定一个数据集,这个时候取决于自身的需求来决定什么是输入和输出
因此数据集非常重要,获取数据的方法:
- 手动标记
- 观察行为
多亏互联网,有很多的数据集可以下载,同时也不要认为,有数据就一定能创造价值,所以不要认为无脑为了获取数据而过度投入。数据本身也是混乱的,如果质量比较差,则会让 AI 学习出不准确的结果,因此如何清理数据也是很重要的
深度学习
深度学习和神经网络两个词汇可以交替使用,它们都是机器学习的工具,神经网络实际上那就是帮助输入计算出输出,神经元是神经网络中最小单位。比如你想卖一件衣服,价格,邮费,营销,材质都是可能影响用户购买的因素,而价格和运输成本需要一个神经元计算出用户的购买力,营销需要一个神经元计算出用户的认知程度,营销和材质需要一个神经元计算出用户对衣服的质量判断,这些前置神经元就可以计算出用户的价格负担,认知程度,以及质量的判断,最后将这三者作为一个输入交给一个神经元并输出预估结果,这就是整个神经网络的工作流程
只要给神经网络输入和输出,它就会自动搞清楚中间的事情,因此只需要给大量的数据,从而让神经网络自动学习从输入到输出的映射
比如使用神经网络识别人脸时,神经网络的输入是每个像素的值,但神经网络的魔法在于,并不需要知道神经网络计算的过程,它会自动计算出来,只需要给它大量的数据就行
其他机器学习技术
神经网络不是唯一选择,还有一些非神经网络机器学习技术
朴素贝叶斯分类器(naive Bayes classifier)是最早的机器学习方法之一。简单地说,对于计算事件发生概率的贝叶斯定理,其实现过程基于两个前提:第一,对已有事件发生可能性的先验认知;第二,观测到的数据,即特征(feature)。这一方法可以用观测到的数据计算每个事件类别对应的概率,然后按照最高的概率(事件发生可能性),将观测到的数据划入一个已知的类别。该方法假设观测到的数据之间是相互独立的,这是一个非常强的假设,同时对现实中的现象有所简化,名字中的“朴素”正是由此而来。逻辑回归(logistic regression)也是一种分类方法。由于其简单和灵活多变的特性,它至今都非常流行,通常是数据科学家处理分类任务的首选方法
核方法(kernel method)主要用于解决二分类问题,即共有两种类别的问题。它将原数据映射到新的更高维空间,并寻找一种转换方式,实现两种类别示例之间距离(又称margin,即间隔)的最大化,从而进行分类。支持向量机(SVM)是核方法最有代表性的例子
决策树(decision tree)的结构与流程图类似。可以对输入的数据进行分类,或者根据输入的数值预测输出。在流程图的每一步,只需要简单地回答一个答案为“是”或“否”的问题,比如“X特征的值是否大于特定阈值”。每一步的流程取决于所选答案,然后进入答案对应的路径,在那里会出现另一个“是”或“否”的问题,以此类推。一旦到达了流程图的终点,也就获得了最终的答案。如你所见,对所有人而言,决策树非常直观且容易理解
随机森林(random forest)和梯度提升机(gradient-boostedmachine)通过整合大量有特定功能的决策树来提高整体的准确率。集成化(ensembling)又名集成学习(ensemble learning),这种方法会训练一些机器学习模型的集合(集成),并在推断阶段将它们的整体输出作为推断结果。现在,梯度提升是用来处理非感知数据最好的算法之一,例如信用卡诈骗检测中的信用数据。和深度学习一样,它也是Kaggle这类数据科学竞赛中较为常用的技巧
流程
机器学习的流程:收集数据->训练模型->派送模型
数据科学的流程:收集数据->分析数据->提出假设->开展行动
机器学习框架
许多团队都开发了机器学习框架用于更好的进行机器学习:
- TensorFlow
- PyTorch
电脑需求
GPU 原本是为了处理图形而设计的硬件,但其实非常适合用来构建大型神经网络,由于需要更强的算力,GPU 已经被证明是非常匹配这种需求的硬件
术语
- 机器学习:这是一个研究领域,它赋予计算机无需明确编程就能学习的能力
- 数据科学:从数据中提取知识和见解的科学
- 深度学习:使用神经网络来进行输出到输入的映射