所谓人工智能就是利用数学统计方法,统计数据中的规律,然后利用这些统计规律进行自动化数据处理,使计算机表现出某种智能的特性,而各种数学统计方法,就是大数据算法。
AI打交道。比如当刷抖音时,每个视频都是通过AI算法推荐过来的;逛淘宝时,它的推荐算法促使大家不断地买买买;现在国内很多小区开始装上了人脸识别门禁系统,只能刷脸就可以通过;
通俗来讲,只要一个系统具备一定的智能,同时可以帮助我们做一些决策,我们都可以把它列为AI系统。
AlisthefieldthatstudiesthesynthesisandanalysisOfcomputationalagentsthatactintelligently.
ThinklikehumansThinkrationally
ActlikehumansActrationally
人工智能的现状
近几年每个人都在谈论AI,甚至也流传AI可能会给人类带来威胁的言论。但实际上,从技术的角度来看,我们还远没有达到这个程度。特别是,近两年人们也已经开始意识到了这一点,对AI的认知也变得更
加的理智,不再像15年的时候那样AI的泡沫到处可见。我们认为18-19年大概是个分水岭,从那之后,能看出来人们对AI的理解变得越来越理性,同时从之前观望的态度,开始慢慢转变为真正试着去拥抱和学习AI
知识。
在早些年,我们甚至觉得无人驾驶的普及也就几年而已,但现在看来离真正全方位的落地还有很长的路要走。这里不仅仅需要有可靠的AI识别系统,而且也需要依赖于坚实的基础建设(比如为了无人驾驶而设
计的道路等),这些事情并不是短暂几年就可以完全做出来的,何况我们还需要考虑极高的安全问题。虽然特斯拉具备无人驾驶功能,但我想问有多少人真正放心地把驾驶权交给机器,然后自己在车里看书或者
睡觉在知识探索的旅途中,我们经常会经历一个特殊的阶段:一个人掌握得越多,就会发现自己什么都不会。
之所以谈论这些较为负面的事情,并不是在否定AI的价值,只是希望大家能够对AI有个更理性的认知,不要过于理想化,同时也希望能够踏踏实实地学习并对待AI。其实AI远没有比大家想象中的那么复杂,万事
开头难!
AI的落地需要注意的事项
由于技术成熟度的限制,当我们试着去落地AI应用的时候,一定要认清技术的边界以及定义好问题的范围(scope),千万不要把问题设计得过大,而且要善于结合专家经验(人的经验)来实现AI系统。举一个“糟糕”
的例子,现阶段如果想去实现什么都能做的私人AI助理是不可能的。但相反,如果把问题的范围定位成设计一个帮你做记账管理的私人助手是有可能做出来的。
如果之前从事过IT行业,应该能了解到一个软件开发项目的失败率是很大的。对于AI应用来讲,可以自信地说市面上90%以上的工作可能最后给业务带来不了什么价值。其中有很多原因,比如问题定位的太大
导致超出了目前技术所能达到的极限,再比如一开始就定义了一个错误的问题等等。所以,以后如果决定做AI项目,实施之前一定要想好这些风险,要做充分的可行性分析。如何正确地实施一个AI项目从而减
少失败率
AI和BI最大的区别在于,AI可以帮助我们做决策,但BI更多的是辅助人做决策。一个BI系统最终呈现给用户的是各类的可视化分析图,并通过这些数据统计,帮我们做更精准的决策。举个例子,基于用户信息
自动判断一个人的信用状况是AI应用,因为通过数据机器可以下定决策结果;但相反,一个APP的留存分析是停留在了BI上,因为这些统计数据只是辅助我们做接下来产品上的决策。
人工智能的应用场景
人工智能的应用场景非常之多,不仅涉足到了新型的互联网行业、也在慢慢改变传统行业如房地产行业、保险行业等等。那有没有行业不会受到人工智能影响呢其实还真想不到...有人可能会提出理发行
业会不会不受AI影响但仔细想一想,其实不一定。比如我们在理发之前,可以在虚拟场景下尝试各类的发型,然后再决定具体的发型。再者,或许也能够做出机器人理发师呢
全民AI
数据思维(从数据中发掘价值)、迭代思维、最优化思维等;
数据公司(从数据中挖掘价值);
AI开发门槛越来越低;
什么是机器学习
机器学习自动帮我们从数据中挖掘并总结规律,广泛应用在电商推荐、无人驾驶、人脸识别、金融风险评估等应用。
FieIdofstudythatgivescomputerstheabilitytolearnwithoutbeingexplicitlyprogrammed.
比如想用程序来辨别张三和李四两个人。一种实现方法是根据它俩的显著特征来设计规则如:假如一个人比较高、偏胖、脸上有皱纹,同时拥有啤酒肚就识别为张三,否则为李四。这种实现方案是基于
人的先验知识的,也就把一个人已经了解到的知识提前写成规则的形式。机器学习的运作方式恰好跟这个相反:假如我们手里有若干张张三和李四的照片,然后给机器看,同时告诉机器哪个是张三,哪个是李四。之后我们期待机器可以从这些数据中自动寻找可以分辨张三和李四的规律出来,这叫作机器学习。
什么是深度学习
AI的崛起过程中有两件非常具有代表性的事件,一个是2012年的ImageNet竞赛,另外一个是2015年的AlphaGo事件,利用的都是深度学习。深度学习带动了AI的发展和带动了大众对AI的热潮;
DeepLearningisasubfieldOfmachinelearningconcernedwithalgorithmsinspiredbythestructureandfunction0fthebraincalledartificialneuralnetworks.
深度学习并不特指某一个模型,而是泛指某一类模型。一个模型如果是属于深度学习范畴,它必将具有比较”深“的结构。这种”深“度通常是通过把一系列简单的模型通过不断叠加的方式来实现的。
比如深度神经网络就是把经典的神经网络不断叠加在一起;深度随机森林就是把随机森林不断叠加在一起。
主流的深度学习模型
机器学习和深度学习
是,那个年代我们缺乏数据,同时也缺乏好的硬件资源,导致深度学习未能把它的潜力足够发挥出来。所以,从另外一个角度,我们也可以说实际上当代AI的发展很大程度上依托于数据量的爆发式增长以及基于
摩尔定律的硬件的发展。
常用工具:
从应用的角度,AI技术可以分为三大类:视觉、自然语言和语音。
文本(自然语言处理)、图像|视频(图像识别)、语音识别(音频、语音)
AI领域顶级会议
监督学习、无监督学习、回归、分类。
监督学习和无监督学习的区别
监督学习处理的数据是带有标签(label)的,无监督学习处理的数据则没有标签的。由于后者的数据没有被标记,我们就无法做预测。除了监督学习和无监督学习,其实还有一类叫作强化学习(reinforcementlearning)。AlphaGo就是强化学习最经典的代表作。虽然在棋牌等任务上强化学习取得了不俗的表现,但对于工业界实际问题来讲,
强化学习目前为止并没有特别突出的表现,这也意味着强化学习技术本身也需要更多的探索。其实,对于现实中的问题,它所面临的环境要比棋牌复杂得多,同时也充斥了很多的不确定性。
监督学习例子:
监督学习进一步分为回归(Regression)和分类(Classfication)问题
数值和类别的主要区别在于后者是没有大小关系的,比如”好“和”坏“,”电商“和"体育",”国内“和”国外“。
无监督学习(聚类算法)
特征与标签
数据集(Dataset)包含了100个样本(sample),每一个样本拥有50个特征和1个类别标签,标签取自于(0,1)”,这就是经典的用于监督学习的数据。我们可以使用一个标准化的数学用语来表示上面的这句话。
一共有2个样本;
工作经验、职位、城市都属于特征,用X表示;
薪资属于标签(label),用Y表示,是我们需要去预测的,属于一个回归问题(预测的是个具体的值)。
X就是一个矩阵,Y就是一个向量;
数据集的描述:
D表数据集,里边有n个样本,x1,x2...xn叫一组特征向量;y1,y2...yn叫标签,这个标签数据其中一个类别。
训练数据和测试数据
对于给定的训练数据,我们通常把它进一步分为训练数据和测试数据。这么做的目的是需要留出一部分数据来验证训练出来的模型的好坏。我们使用训练数据来训练模型,并在测试数据上做最后的验证。
如果在测试数据上表现也良好,就说明达到了上线的标准。
机器学习建模通常都需要经过以下几步:
从数据探索、数据处理、建模到最终的模型验证和部署上线。
案例:通过身高去预测一个人的体重
属于经典的回归问题;AI建模流程:
通过数据探索我们会对业务和数据本身有更深入的理解,从而能够选择更合适的方法来解决问题。数据探索过程中,最常用的是数据可视化技术,也就是把数据直观地展示在二维或者三维的空间。通过这
种可视化的方法,我们可以试着理解数据的分布特征(如是否满足线性)、发现是否包含异常值、特征值是否满足某一类分布(如高斯分布)等等。
从身高和体重的可视化结果中,通过肉眼可以直观地看到它们之间的关系,偏向于线性关系。
数据本身具有线性关系,同时属于回归类问题,所以我们可以选择线性回归模型来解决这个任务。线性回归是最为经典的、最简单的回归模型,广泛地应用在各类预测任务中,如下一季度收入预测、销量预测等等。对于线性回归,在之后的章节里做详细的介绍。
在数据探索阶段,可视化技术起到了很重要的作用。但对于特征维度很高的数据来讲,直接去可视化是不太现实的,因为我们人类只能识别出二维或者三维的可视化。
如果给定的数据维度很大,如何做可视化分析呢
最为常用的方法是做数据的降维,比如把100维的数据降维到2维或者3维的空间。用来做数据降维的方法有很多种,其中最经典的方法叫作主成分分析(PCA)。
在建模过程中,数据预处理扮演着举足轻重的角色,这个过程通常会涉及到一些数据清洗的工作。在很多的AI任务中,数据本身具有大量的噪声,所以处理好这些是一项必要的工作。噪声可以是,数据字段的缺失、数据字段的异常、数据字段的不匹配等等。虽然这些工作看似很枯燥,但对于结果有着非常重要的影响,所以一定要引起足够的重视。
特征工程(featureengineering)也起着非常重要的作用。所谓的特征工程指的是把一个物体表示为向量的过程。那为什么需要这种向量呢这是因为任何模型的输入要求的就是一个个向量。
对于体重预测问题来讲,实际上不太需要特征预处理或者特征工程步骤的。首先,我们的特征都很干净,而且也没有任何异常值。另外,毕竟只有一个特征,也不太需要特征工程的步骤。
当选定了模型之后(如线性回归),下一步的事情就是针对于训练数据去拟合一个最好的线性回归模型。这部分的工作可以通过sklearn里封装好的函数来实现。
对于给定的特征X和标签y,我们可以直接调用sklearn里的LinearRegression()类初始化一个线性回归模型,之后再通过fit()函数在给定的数据上做拟合。样例代码如下:
#实例化一个线性回归的模型regr=linear_model.LinearRegression()#拟合给定的数据(X,y)regr.fit(X_train,y_train)拟合完之后对象regr里存储着已经训练好的线性回归模型的参数,并可以使用regr来对未来的数据做预测了。这里需要注意的是,对于给定的数据我们可以提前分好训练集和测试集。
数据集划分
数据不充足时,可以重复地利用数据——交叉验证(crossvalidation)简单交叉验证
S折交叉验证
留一交叉验证
对于验证模型的效果,可以从两个方面考虑。一方面,我们可以观察在训练数据上的拟合度,另外一方面观察在测试数据上的预测能力。在训练数据上的拟合度是根本,如果在训练数据上都没有很好地拟合,就更不要谈测试数据上的验证了。
对于线性回归模型,它的拟合度可以通过真实值和预测值之间的误差来表示。
#计算训练好的模型在训练数据上的拟合度print(regr.score(X_train,y_train))#可视化在训练数据上拟合后的线条,这部分通过matplotlib库来实现,线条可以通过#plot()函数来实现#首先,画出给定的训练数据plt.scatter(x_train,y_train,color='red')#画出训练好的线条plt.plot(x_train,regr.predict(x_train),color='blue')#画x,y轴的标题plt.xlabel('height(cm)')plt.ylabel('weight(kg)')