1、NPL概念理解
神经网络作为一种机器学习模型,本质是一种 通用函数近似器(Universal Function Approximators),或者说超级复杂函数的拟合器。这意味着他们可以通过有监督学习 无限逼近任意连续函数。而我们可以想到的任何过程几乎都是可以表示为神经网络中的函数计算。神经网络的传播都是形如 $Wx+b$ 的 线性变换运算 :
激活函数
如果整个神经网络都是线性变换的运算,即使叠加很多层,最后产出的不过是复杂的线性组合,只能应对做线性分类任务,就像是用无限条直线去逼近一条曲线。为了给线性变换加入非线性变换,引入了系列激活函数(Sigmoid、tanh、Relu、Leaky Relu、Maxout、ELU),激活函数改变了每个神经元节点的线性输出特点, 最终才使得神经网络可以逼近任何非线性函数。
关于 激活函数的选择:
1、sigmoid 激活函数:除了输出层是一个二分类问题基本不会用它。
2、tanh 激活函数: tanh 是非常优秀的, 几乎适合所有场合。
3、ReLu 激活函数:最常用的默认函数,如果不确定用哪个激活函数,就使用 ReLu 或者 Leaky ReLu。ReLU处理了sigmoid、tanh中常见的梯度消失问题,同时也是计算梯度最快的激励函数。并且它只输出 $Wx + b$ 运算后大于零的值,其到类似神经元激活与否的作用,很好地模拟生物学中神经元激活的原理。
4、对于 回归问题应使用线性激活函数 $f(x) = x$。
损失函数
- 对于分类模型,常用 交叉熵损失(Cross Entropy Error), 交叉熵损失本质计算的是对数的负数 $-log(p)$,当预测分数接近$1$ 的时候 $ - log(p) = 0$,相比 $1- p$ 的方式,使用交叉熵当损失函数拥有较快的收敛速度。
- 对于回归模型,常用的还是 $MSE$。
神经网络的神奇之处就在于它可以自动根据损失函数做W和b的优化,在深度学习中,参数的数量有时会上亿,不过其优化的原理和简单神经网络是一样的。
2、NPL.VS.ML Algorithm
对于机器学习算法来说,并不存在一种“完美的”机器学习算法,能够出色地解决任何问题。对于某个问题,有的方法是适合的,有的则反之。神经网络的主要优势在于,它的性能优于几乎其他的机器学习算法。但是就是说的,搭建多层的权重变换网络产生的 多重输出 往往不具有可解释性,也就是神经网络的 "黑箱" 性质。想比起来就不如机器学习算法中的许多算法,比如决策树能更容易知道产生输出的原因。
神经网络对比决策树:
决策树可以理解为神经网络的简化版,基于树的方法沿着不同的特征逐步分割特征空间,以优化信息增益,它对于具有明显特征关联的分类任务表现优秀,而且这类任务并不依赖于概率,是确定性建模。对于复杂特征关联性的任务,考虑到概率计算的细微差别就会影响分类结果的情况,概率建模就比起确定性建模要更准确,像文本处理,文本有太多的信息和太多的异常,是不无法用确定性的特征组合来表示的,这时应用神经网络才能识别出这种复杂关联性。
神经网络的缺点:
与传统的机器学习算法相比,神经网络通常需要更多的数据,至少需要数千甚至数百万个标记样本才能训练出一个完美网络结构(调整出合适的神经元)。通常在计算方面,神经网络比传统算法更昂贵。先进的深度学习算法,若想成功完成训练,可能需要几周的时间。而大多数传统的机器学习只需花费少于几分钟,几个小时或者几天。
对于一般的线性和非线性问题,ML领域的经典算法往往是第一选择,更少的参数,更直观的理解,更高效的求解;只有对于特定领域内一些复杂特征问题的求解上,基于大量训练样本和算力资源的情况下使用神经网络才是个不错的求解方案。
Reference
神经网络的优点和缺点 - 知乎 (zhihu.com)
神经网络15分钟入门
激活函数以及作用
如何用神经网络实现连续型变量的回归预测
机器学习算法终极对比:树模型VS神经网络