飞道的博客

你不得不了解的人工智能基础知识

396人阅读  评论(0)

你不得不了解的人工智能基础知识

1.什么是人工智能?

首先我们利用传统的软件和人工智能进行比较,就容易使大家更容易理解。

(1) 传统软件 VS 人工智能

传统软件是[基于规则]的,需要人为的设定条件,并且告诉计算机符合这个条件后该做什么。

人工智能则是机器从[特定]大量数据中总结规律,归纳出某些[特定知识],然后将这种知识应用到特定的场景中去解决实际问题。

然而,当前的人工智能知其然,但不知所以然。

也正是因为归纳逻辑,所以需要依赖大量的数据。数据越多,归纳出来的经验越具有普适性。

而我们在探寻AI的边界时,我们可以简单粗暴的把AI分成3个级别:

2.图灵测试

图灵测试的提出是因为图灵在思考一个问题:机器能否思考?

并且图像相信是可以制作出会思考的机器,于是就在想第二个问题:如何判断机器能否思考?

于是就有了图灵测试。

那么什么是图灵测试呢?

让一个人坐在电脑前,跟另一边用键盘进行对话,如果这个人分不清跟自己对话的是一个人还是一个机器,那么这个对话机器就通过了图灵测试并具备人工智能。

3.什么是算法?

算法简单来说,就是解决问题的手段,并且是批量化解决问题的手段。

比如你想要木头桌子,那么制造桌子的工厂就是“一套算法”。提供(输入)木头,就会得到(输出)桌子。

关于算法,有3点需要注意:

  • 1.没有某种算法是万能的。
  • 2.算法没有高级和低级之分。
  • 3.根据不同的环境选择合适的算法很严重。

4.人工智能中的算力是什么?

在普通的电脑中,CPU就提供了算力帮助电脑快速运行,而在玩游戏中就需要显卡来提供算力,帮助电脑快速处理图形,。那么在人工智能中,就需要有类似的CPU和GPU的硬件来提供算力,帮助算法快速运算出结果。

在上述声什么是算法里讲过,在制造木桌的过程中,工厂的流水线就是算法。在那个例子中,工厂中的机器就像算力,机器越好越先进,制造的过程就越快

5.什么是监督学习?

监督学习是机器学习中的一种训练方式/学习方式:

监督学习需要有明确的目标,很清楚自己想要什么结果。比如:按照“既定规则”来分类、预测某个具体的值…

监督学习的流程:

  • 1.选择一个适合目标任务的数学模型
  • 2.先把一部分已知的“问题和答案(训练集)”送给机器去学习
  • 3.机器总结除了自己的“方法论”
  • 4.人类把“新的问题(测试集)”给机器,让它去解答。

监督学习的2个任务:

  • 1.回归:预测连续的、具体的数值。
  • 2.分类:对各种事物分门别类,用于离散型数据预测。

6.什么是无监督学习?

无监督学习是机器学习中的一种训练方式/学习方式:

下面通过跟监督学习的对比来理解无监督学习:

  • 1.监督学习是一种目的明确的训练方式,你知道得到的是什么;而无监督学习则是没有明确目的的训练方式,你无法提前知道结果是什么。
  • 2.监督学习需要给数据打标签;而无监督学习不需要给数据打标签。
  • 3.监督学习由于目标明确,所以可以衡量效果;而无监督学习几乎无法量化效果如何

无监督学习是一种机器学习的训练方式,它本质上是一个统计手段,在没有标签的数据里可以发现潜在的一些结构的一种训练方式。

无监督学习的使用场景:

  • 1.发现异常数据:通过无监督学习,我们可以快速把行为进行分类,虽然我们不知道这些分类意味着什么,但是通过这种分类,可以快速排出正常的用户,更有针对性的对异常行为进行深入分析。
  • 2.用户细分:这个对于广告平台很有意义,我们不仅把用户按照性别、年龄、地理位置等维度进行用户细分,还可以通过用户行为对用户进行分类。

常见的2类无监督学习算法:

  • 1.聚类:简单说就是一种自动分类的方法,在监督学习中,你很清楚每一个分类是什么,但是聚类则不是,你并不清楚聚类后的几个分类每个代表什么意思。
  • 2.降维:降维看上去很像压缩。这是为了在尽可能保存相关的结构的同时降低数据的复杂度。

7.如何合理划分数据集?

首先先来介绍这三种数据集,训练集 测试集 验证集。先用一个不恰当的比喻来说明3种数据集之间的关系:

  • 1.训练集相当于上课学知识
  • 2.验证集相当于课后的的练习题,用来纠正和强化学到的知识
  • 3.测试集相当于期末考试,用来最终评估学习效果

(1)什么是训练集

训练集(Training Dataset)是用来训练模型使用的。

(2)什么是验证集

当我们的模型训练好之后,我们并不知道他的表现如何。这个时候就可以使用验证集(Validation Dataset)来看看模型在新数据(验证集和测试集是不同的数据)上的表现如何。同时通过调整超参数,让模型处于最好的状态。

作用:

  • 1.评估模型效果,为了调整超参数而服务
  • 2.调整超参数,使得模型在验证集上的效果最好

(3)什么是测试集

当我们调好超参数后,就要开始「最终考试」了。我们通过测试集(Test Dataset)来做最终的评估。

(4)如何合理的划分数据集

数据集的划分并没有明确的规定,不过可以参考3个原则:

  • 1.对于小规模样本集(几万量级),常用的分配比例是 60% 训练集、20% 验证集、20% 测试集。
  • 2对于大规模样本集(百万级以上),只要验证集和测试集的数量足够即可,例如有 100w 条数据,那么留 1w 验证集,1w 测试集即可。1000w 的数据,同样留 1w 验证集和 1w 测试集。
  • 3.超参数越少,或者超参数很容易调整,那么可以减少验证集的比例,更多的分配给训练集。

3种主流的交叉验证法

  • 1.留出法(Holdout cross validation): 按照固定比例将数据集静态的划分为训练集、验证集、测试集。的方式就是留出法。
  • 2.留一法(Leave one out cross validation):每次的测试集都只有一个样本,要进行 m 次训练和预测。 这个方法用于训练的数据只比整体数据集少了一个样本,因此最接近原始样本的分布。但是训练复杂度增加了,因为模型的数量与原始数据样本数量相同。 一般在数据缺乏时使用。
  • 3.K折交叉验证(k-fold cross validation)
    静态的「留出法」对数据的划分方式比较敏感,有可能不同的划分方式得到了不同的模型。「k 折交叉验证」是一种动态验证的方式,这种方式可以降低数据划分带来的影响。具体步骤如下:
    • 1.将数据集分为训练集和测试集,将测试集放在一边
    • 2.将训练集分为 k 份
    • 3.每次使用 k 份中的 1 份作为验证集,其他全部作为训练集。
    • 4.通过 k 次训练后,我们得到了 k 个不同的模型。
    • 5.评估 k 个模型的效果,从中挑选效果最好的超参数
    • 6.使用最优的超参数,然后将 k 份数据全部作为训练集重新训练模型,得到最终模型。

8.机器学习的评估指标大全

所有事情都需要评估好坏,尤其是量化的评估指标。

  • 1.高考成绩用来评估学生的学习能力
  • 2.杠铃的重量用来评估肌肉的力量
  • 3.跑分用来评估手机的综合性能

为了快速理解各项指标的计算方式,用具体的例子将分类问题进行图解,帮助大家快速理解分类中出现的各种情况。

例子:

我们有10张照片,5张男性、5张女性。如下图:

有一个判断性别的机器学习模型,当我们使用它来判断「是否为男性」时,会出现4种情况。如下图:

  • 实际为男性,且判断为男性(正确)
  • 实际为男性,但判断为女性(错误)
  • 实际为女性,且判断为女性(正确)
  • 实际为女性,但判断为男性(错误)

这4种情况构成了经典的混淆矩阵,如下图:

  • TP – True Positive:实际为男性,且判断为男性(正确)

  • FN – False Negative:实际为男性,但判断为女性(错误)

  • TN – True Negative:实际为女性,且判断为女性(正确)

  • FP – False Positive:实际为女性,但判断为男性(错误)

准确率-Accuracy

预测正确的结果占总样本的百分比,公式如下:

准确率 =(TP+TN)/(TP+TN+FP+FN)

虽然准确率可以判断总的正确率,但是在样本不平衡 的情况下,并不能作为很好的指标来衡量结果。举个简单的例子,比如在一个总样本中,正样本占 90%,负样本占 10%,样本是严重不平衡的。对于这种情况,我们只需要将全部样本预测为正样本即可得到 90% 的高准确率,但实际上我们并没有很用心的分类,只是随便无脑一分而已。这就说明了:由于样本不平衡的问题,导致了得到的高准确率结果含有很大的水分。即如果样本不平衡,准确率就会失效。

精确率-Precision

所有被预测为正的样本中实际为正的样本的概率,公式如下:

精准率 =TP/(TP+FP)

精准率和准确率看上去有些类似,但是完全不同的两个概念。精准率代表对正样本结果中的预测准确程度,而准确率则代表整体的预测准确程度,既包括正样本,也包括负样本。

召回率(查全率)- Recall

实际为正的样本中被预测为正样本的概率,其公式如下:

召回率=TP/(TP+FN)

召回率的应用场景: 比如拿网贷违约率为例,相对好用户,我们更关心坏用户,不能错放过任何一个坏用户。因为如果我们过多的将坏用户当成好用户,这样后续可能发生的违约金额会远超过好用户偿还的借贷利息金额,造成严重偿失。召回率越高,代表实际坏用户被预测出来的概率越高,它的含义类似:宁可错杀一千,绝不放过一个。

F1分数

如果我们把精确率(Precision)和召回率(Recall)之间的关系用图来表达,就是下面的PR曲线:

可以发现他们俩的关系是「两难全」的关系。为了综合两者的表现,在两者之间找一个平衡点,就出现了一个 F1分数。

ROC曲线

真正率(TPR) = 灵敏度 = TP/(TP+FN)

假正率(FPR) = 1- 特异度 = FP/(FP+TN)

ROC(Receiver Operating Characteristic)曲线,又称接受者操作特征曲线。该曲线最早应用于雷达信号检测领域,用于区分信号与噪声。后来人们将其用于评价模型的预测能力,ROC 曲线是基于混淆矩阵得出的。

ROC 曲线中的主要两个指标就是真正率和假正率。其中横坐标为假正率(FPR),纵坐标为真正率(TPR),下面就是一个标准的 ROC 曲线图。

ROC 曲线的阈值问题

与前面的 P-R 曲线类似,ROC 曲线也是通过遍历所有阈值 来绘制整条曲线的。如果我们不断的遍历所有阈值,预测的正样本和负样本是在不断变化的,相应的在 ROC 曲线图中也会沿着曲线滑动。

如何判断 ROC 曲线的好坏?

改变阈值只是不断地改变预测的正负样本数,即 TPR 和 FPR,但是曲线本身是不会变的。那么如何判断一个模型的 ROC 曲线是好的呢?这个还是要回归到我们的目的:FPR 表示模型虚报的响应程度,而 TPR 表示模型预测响应的覆盖程度。我们所希望的当然是:虚报的越少越好,覆盖的越多越好。所以总结一下就是TPR 越高,同时 FPR 越低(即 ROC 曲线越陡),那么模型的性能就越好。 参考如下:

ROC 曲线无视样本不平衡

无论红蓝色样本比例如何改变,ROC 曲线都没有影响。

AUC(曲线下的面积)

为了计算 ROC 曲线上的点,我们可以使用不同的分类阈值多次评估逻辑回归模型,但这样做效率非常低。幸运的是,有一种基于排序的高效算法可以为我们提供此类信息,这种算法称为曲线下面积(Area Under Curve)。

比较有意思的是,如果我们连接对角线,它的面积正好是 0.5。对角线的实际含义是:随机判断响应与不响应,正负样本覆盖率应该都是 50%,表示随机效果。 ROC 曲线越陡越好,所以理想值就是 1,一个正方形,而最差的随机判断都有 0.5,所以一般 AUC 的值是介于 0.5 到 1 之间的。

AUC 的一般判断标准

0.5 – 0.7: 效果较低,但用于预测股票已经很不错了

0.7 – 0.85: 效果一般

0.85 – 0.95: 效果很好

0.95 – 1: 效果非常好,但一般不太可能


转载:https://blog.csdn.net/Mind_programmonkey/article/details/104311322
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场