算法的概念
上一篇文章介绍ai产品经理能力模型,人工智能的发展历史,人工智能常见概念的结构梳理,也简要做了BAT人工智能的优势分析,感兴趣的朋友可以点击链接查看上文:《转型AI产品经理需要掌握的硬知识一:AI产品能力框架和看待AI的几个视角 》
一、常用AI技术概念
提到人工智能,大家应该都听说过这样几个概念:人工智能,机器学习,深度学习,模式识别,知识图谱,卷积神经网络,递归神经网络,以及与人工智能直接相关的概念,如云计算,数据挖掘等,这些概念之间是什么关系呢?笔者找到了一张这些概念的关系图,可以将上述概念串在一起,更易理解,如下图所示:
1、人工智能>机器学习>深度学习
人工智能(Artificial intelligence):英文缩写为AI。它是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学。人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。
机器学习(Machine Learning):机器学习是人工智能领域的一部分,并且和知识发现与数据挖掘有所交集。机器学习还有下面几种定义: “机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。
“机器学习的应用已遍及人工智能的各个分支,如专家系统、自动推理、自然语言理解、模式识别、计算机视觉、智能机器人等领域。机器学习的研究是根据生理学、认知科学等对人类学习机理的了解,建立人类学习过程的计算模型或认识模型,发展各种学习理论和学习方法,研究通用的学习算法并进行理论上的分析,建立面向任务的具有特定应用的学习系统。
深度学习(Deep Learning):深度学习的概念源于人工神经网络的研究,是一种含多隐层的多层感知器。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。深度机器学习方法也有监督学习与无监督学习之分。
不同的学习框架下建立的学习模型很是不同.例如,卷积神经网络(Convolutional neural networks,简称CNNs)就是一种深度的监督学习下的机器学习模型,而深度置信网(Deep Belief Nets,简称DBNs)就是一种无监督学习下的机器学习模型。
2、神经计算>人工神经网络>深度学习>卷积神经网络/递归神经网络
神经计算科学是使用数学分析和计算机模拟的方法在不同水平上对神经系统进行模拟和研究: 从神经元的真实生物物理模型,它们的动态交互关系以及神经网络的学习, 到脑的组织和神经类型计算的量化理论等,从计算角度理解脑,研究非程序的、 适应性的、大脑风格的信息处理的本质和能力,探索新型的信息处理机理和途径。
延伸阅读:计算神经科学
人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象, 建立某种简单模型,按不同的连接方式组成不同的网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。
每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
延伸阅读 神经网络的简化理解
深度学习的概念见上文。
卷积神经网络和递归神经网络下文算法中详细介绍。
3、模式识别、知识图谱和专家系统
模式识别(Pattern recognition)是指对表征事物或现象的各种形式的(数值的、文字的和逻辑关系的)信息进行处理和分析,以对事物或现象进行描述、辨认、分类和解释的过程,是信息科学和人工智能的重要组成部分。模式识别又常称作模式分类,从处理问题的性质和解决问题的方法等角度,模式识别分为有监督的分类(Supervised Classification)和无监督的分类(Unsupervised Classification)两种。
我们所指的模式识别主要是对语音波形、地震波、心电图、脑电图、图片、照片、文字、符号、生物传感器等对象的具体模式进行辨识和分类。模式识别研究主要集中在两方面,一是研究生物体(包括人)是如何感知对象的,属于认识科学的范畴,二是在给定的任务下,如何用计算机实现模式识别的理论和方法。
应用计算机对一组事件或过程进行辨识和分类,所识别的事件或过程可以是文字、声音、图像等具体对象,也可以是状态、程度等抽象对象。这些对象与数字形式的信息相区别,称为模式信息。它与人工智能、图像处理的研究有交叉关系。
知识图谱本质上是语义网络,是一种基于图的数据结构,由节点(Point)和边(Edge)组成。在知识图谱里,每个节点表示现实世界中存在的“实体”,每条边为实体与实体之间的“关系”。知识图谱是关系的最有效的表示方式。通俗地讲,知识图谱就是把所有不同种类的信息连接在一起而得到的一个关系网络。
构建知识图谱的重点在于语义理解、知识表示、QA、智能对话和用户建模。知识图谱是一系列结构化数据的处理方法,它涉及知识的提取、 表示、存储、检索等诸多技术。从渊源上讲,它是知识表示与推理、数据库、信息检索、自然语言处理等多种技术发展的融合。
延伸阅读 知识图谱技术解剖
专家系统是一个具有大量的专门知识与经验的程序系统,它应用人工智能技术和计算机技术,根据某领域一个或多个专家提供的知识和经验,进行推理和判断,模拟人类专家的决策过程,以便解决那些需要人类专家处理的复杂问题。专家系统就是人去学一个东西,然后把学到的知识理论化,再把这些理论模型化,最后把这个模型程序化,形成一个系统,就叫专家系统。知识图谱可以作为专家系统的一部分存在,提供半自动构建知识库的方法。
二、常见算法概述
前文中我们提到了深度学习,既然有深度学习就一定有浅度学习,其区别体现在隐藏层的数量上,一般来说,浅层学习没有隐藏层或者只有一层隐藏层,常见算法包括线性回归、逻辑回归、随机森林、SVM、K-means、RBM、AutoEncoder、PCA、SOM等。深度学习通常会有较多隐藏层,可以表达复杂函数,识别更多复杂特征。常见算法有CNN卷积神经网络和RNN递归神经网络,而基于RNN衍生出了LSTM和GRU等一系列算法。
下面将介绍学习过程中一些常见的算法分类,AI产品未必掌握具体算法实现细节,但是需要掌握一些常见算法概念,它们可以处理什么类型的问题,有什么优点,一般应用在哪些领域。
1、决策树
决策树根据数据的属性采用树状结构建立决策模型, 用树形结构对数据进行分类,在进行逐步应答过程中,典型的决策树分析会使用分层变量或决策节点,决策树模型常常用来解决分类和回归问题。以服装购买为例,首先判定是否喜欢,不喜欢则不买,喜欢则看价格,价格不合适则不买,合适则看是否有合适的尺码,没有合适的尺码则不买,有则购买,基于以上选择,可以画出一个简单的树桩结构。
场景举例:基于规则的信用评估、赛马结果预测
优点:擅长对人、地点、事物的一系列不同特征、品质、特性进行评估
常见相关算法:分类及回归树(Classification And regression Tree, CART)、ID3(Iterative Dichotomiser 3)、GBDT、C4.5、Chi-squared Automatic Interaction Detection(CHAID)、Decision Stump、随机森林(Random forest)、多元自适应回归样条(MARS)、梯度推进机(Gradient boosting Machine, GBM)
随机森林(Random forest):随机森林算法通过使用多个带有随机选取的数据子集的树(tree)改善了决策树的精确性。
优点:随机森林方法被证明对大规模数据集和存在大量且有时不相关特征的项(item)来说很有用
场景举例:用户流失分析、风险评估
2、回归算法
回归算法是试图采用对误差的衡量来探索变量之间的关系的一类算法,可以勾画出因变量与一个或多个因变量之间的状态关系。可以利用回归算法将垃圾邮件和非垃圾邮件进行了区分。常见算法有最小二乘法(Ordinary least Square)、线性回归、逻辑回归(logistic Regression)、逐步式回归(Stepwise Regression)、多元自适应回归样条(Multivariate adaptive Regression Splines)、本地散点平滑估计(locally Estimated Scatterplot Smoothing)
场景举例:路面交通流量分析、邮件过滤
优点:回归可用于识别变量之间的连续关系,即便这个关系不是非常明显
3、基于核函数的学习算法
基于核的算法中最著名的莫过于支持向量机(SVM)了。 基于核的算法把输入数据映射到一个高阶的向量空间, 在这些高阶向量空间里, 有些分类或者回归问题能够更容易的解决。常见算法有支持向量机(Support vector Machine, SVM)、径向基函数(Radial Basis Function ,RBF)、线性判别分析(Linear Discriminate Analysis ,LDA)。
延伸阅读 基于核函数的学习算法
4、基于实例的算法
常常用来对决策问题建立模型,这样的模型常常先选取一批样本数据,然后根据某些近似性把新数据与样本数据进行比较。通过这种方式来寻找最佳的匹配。常见算法有k-Nearest Neighbor(KNN),、学习矢量量化(Learning Vector Quantization, LVQ)、自组织映射算法(Self-Organizing Map , SOM)。
延伸阅读 基于实例的学习
5、神经网络
神经网络也是一种分类器。它是由很多个虚拟的神经元组成的一个网络,我们可以把一个神经元看做是一个分类器,那很多个神经元组成的网络就能对样本进行很多次分类。
CNN(Convolutional Neural Networks)卷积神经网络,是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。
优点:当存在非常大型的数据集、大量特征和复杂的分类任务时,卷积神经网络是非常有用的
场景举例:图像识别、文本转语音、药物发现、照片滤镜、人脸识别,无人汽车等。
RNN(Recurrent Neural NetWorks)递归神经网络,在任意神经网络中,每个神经元都通过 1 个或多个隐藏层来将很多输入转换成单个输出。递归神经网络(RNN)会将值进一步逐层传递,让逐层学习成为可能。换句话说,RNN 存在某种形式的记忆,允许先前的输出去影响后面的输入。
递归神经网络其实是两种人工神经网络的总称,一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neural network)。时间递归神经网络的神经元间连接构成有向图,而结构递归神经网络利用相似的神经网络结构递归构造更为复杂的深度网络。两者训练的算法不同,但属于同一算法变体。基于RNN还衍生出了LSTM(Long-Short-Term-Memerory)和GRU(Gated Recurrent Unit)等一系列算法,这些算法拥有记住过去的能力,所以可以用来处理一些有时间序列属性的数据,在处理语言、文字等方面有独到的优势,LSTM和GRU的优点是具备与其它递归神经网络一样的优点,但因为它们有更好的记忆能力,所以更常被使用。
优点:递归神经网络在存在大量有序信息时具有预测能力
场景举例:图像分类与字幕添加、政治情感分析、对话机器人,机器翻译,科大讯飞的自然语言识别,文章编辑等。
6、叶贝斯算法
贝叶斯是一个定理,它的意思是:当你不能准确知悉一个事物的本质时,你可以依靠与事物特定本质相关的事件出现的多少去判断其本质属性的概率。当我们找到若干个这样的特征,然后用这些特征进行组合后,可以进行判断,常见算法有朴素贝叶斯算法、平均单依赖估计(averaged One-Dependence Estimators, AODE)、Bayesian Belief Network(BBN)。
举例来看,要识别一封邮件是不是垃圾邮件。可以随机挑选出100封垃圾邮件,分析它的特征,我们发现“便宜”这个词出现的频率很高,100封垃圾邮件里,有40封出现了这个词。那我们就以这个认知为依据,得出结论:如果出现了“便宜”,那这封邮件有40%的概率是垃圾邮件。
优点:对于在小数据集上有显著特征的相关对象,朴素贝叶斯方法可对其进行快速分类
场景举例:情感分析、消费者分类
7、聚类
聚类是一种非监督学习的方式。简单的说,就是通过不断的迭代计算,把数据分成若干个组,使得这个组里的都是类似的数据,而不同组之间的数据是不相似的。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。可以用于图像分类识别,用户行为识别,用户画像等领域。常见算法有k-Means算法、期望最大化算法(Expectation Maximization, EM)。
8、强化学习模型
在没有给出任何答案的情况下,先进行一些尝试,通过尝试所得到的回报,来确定这个尝试是否正确,由这一系列的尝试来不断调整和优化算法,最后算法知道在某种情况下,采取何种动作可以得到最好的结果。他的本质是解决“决策问题”,就是通过不断做出决策并获得结果反馈后,学会自动进行决策,得到最优结果。比如上面说过的猴子“学会”做算术题的过程。
9、集成学习模型
用一些相对较弱的学习模型独立地就同样的样本进行训练,然后把结果整合起来进行整体预测。集成算法的主要难点在于究竟集成哪些独立的较弱的学习模型以及如何把学习结果整合起来。
我们在做机器学习的时候,希望能做出各个方面表现都比较好的模型。但常常现实是我们的模型是有偏好的,可能只对某一些情况效果比较好,这个时候我们就希望把若干个这样的模型组合起来,得到一个更好更全面的模型,这种方法,就叫做集成学习。常见算法有Boosting、BootstrAPPed Aggregation(Bagging)、AdaBoost、堆叠泛化(Stacked Generalization, Blending)、梯度推进机(Gradient Boosting Machine, GBM)、随机森林(Random Forest)。
三、三大流派
经过几十年的发展,人工智能演化出了多个分支流派,这些分支一直都在彼此争夺主导权,此次人工智能的爆发,主要源于联结主义的神经网络有了突破性发展,将语音识别和视觉识别的准确度分别达到了99%和95%。未来的发展很可能是这三大流派彼此合作,因为算法融合是实现真正通用人工智能(AGI)的唯一方式。
①符号主义(symbolism):是一种基于逻辑推理的智能模拟方法,又称为逻辑主义(Logicism)、心理学派(Psychlogism)或计算机学派(Computerism),其原理主要为物理符号系统(即符号操作系统)假设和有限合理性原理,长期以来,一直在人工智能中处于主导地位。
②联结主义(connectionism):认为人工智能源于仿生学,特别是对人脑模型的研究。它从神经元开始进而研究神经网络模型和脑模型,开辟了人工智能的又一发展道路。1986年,鲁梅尔哈特(Rumelhart)等人提出多层网络中的反向传播算法(BP)算法。此后,连接主义势头大振,从模型到算法,从理论分析到工程实现, 为神经网络计算机走向市场打下基础。
③行为主义:控制论思想早在20世纪40~50年代就成为时代思潮的重要部分,影响了早期的人工智能工作者。实际上是从行为上模拟和体现智能,也就是说,模拟人在控制过程中的智能活动和行为特性来研究和实现人工智能,行为主义思想在智能控制、机器人领域获得了很多成就。
还有一种说法,将人工只分为五大流派,分别是符号主义,贝叶斯主义,联结主义,进化主义和Analogizer,扩展阅读三张图读懂机器学习:基本概念、五大流派与九种常见算法 文中包含大量延伸阅读链接。
四、机器学习的工作流程
选择数据:将你的数据分成三组:训练数据、验证数据和测试数据
模型数据:使用训练数据来构建使用相关特征的模型
验证模型:使用你的验证数据接入你的模型
测试模型:使用你的测试数据检查被验证的模型的表现
使用模型:使用完全训练好的模型在新数据上做预测
调优模型:使用更多数据、不同的特征或调整过的参数来提升算法的性能表现
五、手写数字识别流程概述
1、TensorFlow基础
TensorFlow 是 Google 开源的一款人工智能学习系统。使用很方便,几行代码就能开始跑模型,这让神经网络的入门变得非常简单。Google 开源了 TensorFlow,希望占领 AI 端。Google 也为入门者提供了一个这样的例子,也就是 TensorFlow 里的“ hello world ”,这个例子的名字叫“ MNIST ”,MNIST机器学习入门可点击查看。下文将简述实现过程,重在理解流程和一些模型设计概念。
2、 手写图片识别实现步骤概述
刘颖老师对项目做了三次优化,使手写数字的准确率从92%->98%->99.25%,1.0版使用一个最简单的单层的神经网络进行学习,2.0版使用了卷积神经网络,3.0版使用 Keras 框架,增加20层网络的深度。
手写图片识别的实现,分为三步:(1)数据的准备;(2)模型的设计;(3)代码实现
3、数据准备
在写代码的过程中,数据的预处理是最大的一块工作,60%以上的代码在做数据预处理。 这个项目的预处理,分为5步:
把输入和结果分开
对输入进行处理:把一维的输入变成28*28的矩阵
对结果进行处理:把结果进行 One-Hot 编码
把训练数据划分训练集和验证集
对训练集进行分批
那么准备的数据是什么样的呢?刘颖老师使用Kaggle 里包含了42000份训练数据和28000份测试数据,这些数字是28*28像素的手写数字图片,可以将一张图理解为一个二维数组结构,如下图所示:
Kaggle 的数据将二维数组转化为了一维数组,也就是28*28=784列,包括图片代表的数字一共785列,所以上文中的测试和训练数据被转为[42000,785]和[28000,784]的数组,这就是图片的预处理。
人类可以快速识别图像并对应到记忆中的事物,而图像在计算机看来是这样的:
4、单层的神经网络学习流程及相关概念
使用一个最简单的单层的神经网络进行学习的模型设计如下所示:
用 SoftMax 来做为激活函数
用交叉熵来做损失函数
用梯度下降来做优化方式
激活函数:每个神经元,在通过一系列计算后,得到了一个数值,怎么来判断应该输出什么?激活函数就是解决这个问题,你把值给我,我来判断怎么输出。所以一个神经网络,激活函数是非常重要的。目前主流的几个激活函数是:softMax,sigmoid,tanh,ReLU。
SoftMax:我们知道 max(A,B)是指 A 和 B 里哪个大就取哪个值,但我们有时候希望比较小的那个也有一定概率取到,怎么办呢?我们就按照两个值的大小,计算出概率,按照这个概率来取 A 或者 B。比如A=9,B=1,那取 A 的概率是90%,取B的概率是10%,这就是SoftMax。
损失函数:损失函数是模型对数据拟合程度的反映,拟合得越好损失应该越小,拟合越差损失则越大,然后我们根据损失函数的结果对模型进行调整。
交叉熵:交叉熵通俗的讲就是现在的训练程度和圆满之间的距离,我们希望距离越小越好,所以交叉熵可以作为一个损失函数,来衡量和目标之间的距离。
梯度下降:我们将要解决的问题比作是一座山,答案在山底,我们从山顶到山底的过程就是解决问题的过程。在山顶,想找到最快的下山的路。这个时候,我们的做法是什么呢?在每次选择道路的时候,选最陡的那条路。梯度是改变率或者斜度的另一个称呼,用数学的语言解释是导数。对于求损失函数最小值这样的问题,朝着梯度下降的方向走,就能找到最优值了。
5、卷积神经网络学习流程及相关概念
卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(卷积层)-RELU(激活函数)-POOL(池化层)-FC(全连接层)
卷积层1+激活函数+池化层1+卷积层2+激活函数+池化层2+全连接1+Dropout 层+输出层
卷积层的作用是指对图片的矩阵进行卷积运算,得到一些数值,作为图片的某些特征。
池化层的作用是对上层的数据进行采样,也就是只留下一部分,这样的作用是可以缩小数据量和模糊特征。
全连接层就是连在最后的分类器。前面卷积层和池化层进行处理后,得到了很多的特征,全连接层使用这些特征进行分类。比如识别数字,那就是对0~9的十个类别进行分类。
Dropout层是为了防止 CNN 对训练样本过拟合,而导致处理新样本的时候效果不好,采取的丢弃部分激活参数的处理方式。
这里对这些概念的解释都是比较简单的,如果希望详细了解,可以看知乎的这个链接:CNN卷积神经网络是什么? 卷积神经网络
6、使用 Keras 框架实现多层神经网络学习
使用 Keras 框架提升准确率
增加网络的深度,这里增加到了20层
每次卷积完之后,加入规范层
使用最新的 SELU 激活函数,这是 Sepp Hochreiter 最新发表在 arXiv 上的激活函数
概括来看,图片识别中需要完成数据的准备,模型设计,代码实现三部分,浅层学习需要选择激活函数,损失函数和优化方式,应用卷积神经网络在模型设计时需要考虑输入层、卷积层、激活函数、池化层、全连接层等。
笔者暂时可以理解的只有这些,希望AI大神或前辈可以多多指正,如果AI产品经理的岗位求内推,如果AI产品经理的岗位求内推,如果AI产品经理的岗位求内推,重要的事情说三遍~
下一篇文章尝试总结我们身边的一些2B和2C的AI产品,并且尝试着对于未来AI产品的应用场景开开脑洞。
相关阅读:
转型AI产品经理需要掌握的硬知识(一):AI产品经理能力模型和常见AI概念梳理
相关阅读
我们要在算法和心法之间,腾出地方,交给AI,人类自己则继续向未知世界探索,利用碳基生物与生俱来的那种无知和混乱所带来的进化契机,结合
希望通过我们的几篇文章,能够帮助你更好的了解A/B测试和置信区间,一起实现用A/B测试驱动产品优化。A/B测试的实质是对照试验,即通过
经典指标:SAR算法和应用SAR又叫抛物线转向指标,是一种经典的判断股市转势和顶底的指标。以下我们来看下SAR指标的算法和应用,看下这
随着互联网逐渐渗透着人们的生活,大家开始把越来越多的事情搬到电脑或者手机上来做,读书就是其中之一。移动端电子书由于方便,而且价
计算用户/物品相似度,以相似度作为权重,对不同物品进行评分预测,从而实现物品。什么是协同过滤先举个生活中的场景,你想听歌却不知道