深度学习有哪些神经网络
一般来说,训练深度学习网络的方式主要有四种:
- 监督学习(supervised learning)
- 无监督学习 (unsupervised learning)
- 半监督学习(semi-supervised learning)
- 强化学习(reinforcement learning)
监督学习
是指用已经标记好的数据,做训练模型来预测新数据的类别。
无监督学习
是指不需要提前对数据进行标记,直接对它们进行聚类。
半监督学习
是指同时用了有监督学习的方法和无监督学习的方法。准确来说是同时用来标记好的数据和未标记的数据。
强化学习
强化学习也是使用未标记的数据,但是可以通过某种方法知道你是离正确答案越来越近还是越来越远。
以上只是给出各个神经网络学习方法的基本概念,基本上初次接触深度学习基本不知道它讲的是啥,它们的定义都是从数据层面来看的,我们需要先理解什么叫做标记好的数据和未标记好的数据,脱离数据谈深度学习基本都是瞎扯,我们训练模型都是为了让计算机学习到一些东西,而数据就可以说是我们的一些先验知识。
什么是标记好的数据?
举个例子吧,比如我们有很多猫的图片和狗的图片,我们分别给这些图片打上标签(label),用来告诉计算机哪些是猫的图片,哪些是狗的图片,类似这些数据就是标记好的数据。而未标记好的数据则是没有被打上标签的。
图片引用自:莫烦PYTHON
监督学习有哪些数据集?
目前笔者接触深度学习并不多,都还处于监督学习的阶段当中,所以这里说的数据集也是基于监督学习来说的。
我们在进行有监督的神经网络学习当中,经常会谈到以下几个数据集:
- 训练集(train dataset)
- 验证集(validation dataset)
- 测试集(test dataset)
训练集
字面意思,就是用来训练模型的数据集。
验证集
作用是当通过训练集训练出多个模型之后,使用各个模型对验证集进行预测,并记录模型的准确率。
测试集
测试集是从原始数据划分出来用来预测训练好的模型,通常用来衡量模型的性能和分类能力。必须要注意,测试集是不允许出现在训练集当中的,不然就没有意义了。
问题:三个数据集该怎么划分?
是的,这也是笔者在拿到原始数据在进行数据划分产生的疑惑,关于这三块数据集有什么经验值呢,其实是有的:
小数据集
- 训练集 60%
- 验证集 20%
- 测试集 20%
大数据集
比如100万数据,我们可以按照以下比例划分:
- 98/1/1(训练集/验证集/测试集)
- 99.5/0.4/0.1(同上)
具体可以参考吴恩达的深度学习课程。
分类模型有哪些评测指标?
当数据集有了,模型也训练出来了,那我们怎么去评测一个模型的性能和效果呢,这里以分类模型来谈下如何衡量模型的好坏,不同的模型的评价指标不一样,后续笔者学到的话也会分享给大家。
分类模型一般会有哪些指标呢?
- 正确率(Accuracy)
- 精确率(Precision)
- 召回率(Recall)
- F1值(F1-Measure)
定义样本的计算变量:
TP(True Positive):正类被预测为正类样本数
FP(False Positive):负类被预测为正类样本数
TN(True Negative):负类被预测为负类样本数
FN(False Negative):正类被预测为负类样本数
你可能会比较懵,这里正样本指的是正类,比如我要识别一张猫的图片,猫的图片就是我们的正样本,而其他类型的图片就是我们的负样本,比如狗的图片就是负类我们不希望它被识别为猫的。
正确率
对于给定的测试集,分类器正确分类的样本数与总样本数之比。
计算公式:Acc = (TP + TN) / all
精确率
正类被预测为正类样本数占正类被预测为正类样本数与负类预测为正类数之和的比例。
计算公式:prec = TP / TP + FP
召回率(recall)
正类被预测为正类样本数占正类被预测为正类样本与正类被预测为负类之和的比例
计算公式:recall = TP / TP + FN
F1-measure
精确率和召回率的调和均值。
计算公式:F1 = 2PR / P + R
光看计算公式基本也懵了吧,笔者有时候在考虑这一块的指标也会搞混,引用一张图来看几个指标来看看会不会更好理解:
A:(搜到的也想要的)
B:检索到的,但是不相关的 (搜到的但没用的)
C:未检索到的,但却是相关的 (没搜到,然而实际上想要的)
D:未检索到的,也不相关的(没搜到也没用的)
我们在实际考虑模型的效果的时候,不一定所有指标都看,得结合我们的应用场景去看我们更关注哪些指标,比如说我们做敏感文本审核,我们可能更关注精确率,我们可能允许一些误伤,但如果我们要做敏感文本清洗,我们可能更关注召回率,因为我们需要保证正样本绝大部分被识别出来,漏掉的部分我们可以采取人工的手段去解决。
总结
本篇文章简单介绍了目前深度学习训练神经网络的一些方法,介绍了关于监督学习的数据集划分还介绍了我们怎么去评测一个分类模型的好坏,它们的指标有哪些,这是笔者觉得像我们这种深度学习入门者可能要关注的一些点,包括数据和评测方式,希望对你们有帮助。