一:机器学习和深度学习对比
(一)传统机器学习
什么是传统机器学习?传统机器学习是指一系列能够从数据中学习规律,并根据这些规律进行预测和决策的算法。 它通常包括以下几种类型的算法:线性回归和逻辑回归:用于解决回归和分类问题----可以认为:逻辑回归是在线性回归基础上加上sigmod方法,进行0/1分类
决策树和随机森林:用于构建预测模型,进行后续分类---Kd近邻树
支持向量机(SVM):用于分类和回归分析。
聚类算法:如K-means,用于将数据分成不同的组。
朴素贝叶斯:基于贝叶斯定理的分类算法。
这些算法大多数需要人工特征工程,也就是说,需要人类专家根据对领域知识的理解来提取特征,然后再将这些特征输入到机器学习算法中。
(二)深度学习
深度学习是基于人工神经网络,通过模仿人脑的结构和功能,通过多层次的神经元网络来处理和分析数据。深度学习之所以“深”,是因为它的网络层数非常多,通常包括数十甚至数百层。 深度学习有几个显著的特点:- 自动特征提取:深度学习能够自动从数据中提取特征,而不需要人工干预。这是因为它的多层结构可以逐层提取数据的高级特征。
- 处理非结构化数据:深度学习特别擅长处理图片、语音和文本等非结构化数据,这是传统机器学习难以做到的。
- 大数据和高计算力需求:深度学习模型需要大量的数据和强大的计算资源,这也是为什么深度学习在大数据时代得以迅速发展的原因。
(三)传统机器学习与深度学习的区别
两者都是从数据中学习规律,并利用这些规律进行预测和决策,但是有着如下区别:- 特征工程:传统机器学习依赖人工特征工程,而深度学习通过多层神经网络自动提取特征。
- 数据需求:传统机器学习可以在较少的数据下工作,而深度学习需要大量数据来训练模型。
- 计算需求:深度学习需要更强大的计算能力,通常需要使用GPU来加速计算。
- 应用场景:传统机器学习主要应用于结构化数据,如表格数据;深度学习则在处理图片、语音和自然语言处理等非结构化数据方面表现优异。
- 如果你的数据量不大,而且是结构化数据,传统机器学习可能会是一个更好的选择。
- 如果你有大量的非结构化数据,如图像或语音,深度学习可能会表现得更好。
二:深度学习基础
(一)MLP全链接神经网络(经典)
MLP本身并不是超级强大,但你会发现它们几乎集成在任何其他架构中(令人惊讶的是,甚至在transformer中)。MLP基本上是一个线性层序列或完全连接的层。主要有以下特征:- 全连接:在全连接的多层感知机中,每个神经元都与前一层的所有神经元相连,因此它对输入数据的特征提取是全局性的。
- 参数多:每个连接都有一个单独的权重,参数较多,容易导致过拟合。
- 无平移不变性:由于全连接的结构,MLP难以学习到平移不变性,对于图像等具有平移不变性的数据,需要大量数据来进行训练。(平移不变性----图像中目标无论是被平移,被旋转,还是被缩放,甚至是不同的光照条件、视角,都可以被成功地识别出来)
(二)补充:激活函数
1.常见的激活函数包括:sigmoid、tanh、Relu、Leaky Relu
- sigmoid:
值域在0和1之间
函数具有非常好的对称性
函数对输入超过一定范围就会不敏感,梯度消失;
反向传播幂运算计算量大
Sigmoid函数的输出不不是Zero-centered的
- tanh
tanh函数和sigmoid神经元⼀样,也具有软饱和性。
但是和sigmoid神经元不同的是,它解决了zero-centered的输出问题,因此,在实际操作中,tanh非线性函数比sigmoid非线性函数更受欢迎。
然而,gradient vanishing的问题和幂运算的问题仍然存在。
因为tanh的输出均值比sigmoid更接近0,SGD会更更接近natural gradient(一种二次优化技术),从而降低所需的迭代次数。
但是在二分类中(0,1)还是用sigmoid更好,因为范围在(0,1)之间。
sigmoid与tanh缺点:
sigmoid函数和tanh函数两者共同的缺点是,在特别大或者特别小的情况下,导数的梯度或者函数的斜率会变得特别小,最后斜率就会接近于0,导致降低梯度下降的速度- Relu和Leaky Relu
对于Relu:
只要是正值的情况下,导数恒等于1,当是负值的时候,导数恒等于0。从实际上来说,当使用的导数时,=0的导数是没有定义的。但是当编程实现的时候,取值刚好等于0.00000001,这个值相当小,所以,在实践中,不需要担心这个值,是等于0的时候,假设一个导数是1或者0效果都可以。
对于Leaky ReLu:
当是负值时,这个函数的值不是等于0,而是轻微的倾斜,这个函数通常比Relu激活函数效果要好,尽管在实际中Leaky ReLu使用的并不多。