为什么在机器学习中引入激活函数
激活函数是我们对输入做的一种非线性的转换。转换的结果输出,并当作下一个隐藏层的输入。
线性变换太简单(只是加权偏移),限制了对复杂任务的处理能力。没有激活函数的神经网络就是一个线性回归模型。激活函数做的非线性变换可以使得神经网络处理非常复杂的任务。
Sigmoid和tanh的特点是将输出限制在(0,1)和(-1,1)之间,说明Sigmoid和tanh适合做概率值的处理,例如LSTM中的各种门;而ReLU就不行,因为ReLU无最大值限制,可能会出现很大值。同样,根据ReLU的特征,Relu适合用于深层网络的训练,而Sigmoid和tanh则不行,因为它们会出现梯度消失。
tanh函数相较于sigmoid函数要常见一些,该函数是将取值为 (−∞,+∞)的数映射到 (−1,1) 之间,其公式与图形为
批量梯度下降(BGD)、随机梯度下降(SGD)、小批量梯度下降(MBGD)
Batch Gradient Descent,BGD:
在一个大批量中同时处理所有样本,每一次迭代时使用所有样本来进行梯度的更新
def batch_gradient_decent(X,y,W,alpha,loop_Num):temp_w=np.matrix(np.zeros(W.shape))n=int(W.ravel().shape[1])loss=np.zeros(loop_Num)for cost in range(loop_Num):d=(X*W.T)-yfor i in range(n):t=np.multiply(d,X[:,i])temp_w[0,i]=W[0,i]-((alpha/len(y))*np.sum(t))W=temp_wloss[cost]=loss_Func(X,y,W)
优点:
全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,一定能收敛到全局最小值,如果目标函数非凸则收敛到局部最小值。
对梯度的估计是无偏的。样例越多,标准差越低。
Stochastic Gradient Descent,SGD
每次迭代时使用一个样本来对参数进行更新(mini-batch size =1)
SGD迭代的次数较多,在解空间的搜索过程看起来很盲目。其迭代的收敛曲线示意图可以表示如下
这是对同一数据的相同两次操作:
优点:每一轮参数的更新速度大大加快
学习过程中加入了噪声,提高了泛化误差。
Mini-batch Gradient Descent,MBGD
对于深度学习模型而言,人们所说的“随机梯度下降, SGD”,其实就是基于小批量(mini-batch)的随机梯度下降
mini-batch的SGD算法中一个关键参数是学习率。在实践中,有必要随着时间的推移逐渐降低学习率—学习率衰减(learning rate decay)。
为什么要进行学习率衰减呢?
在梯度下降初期,能接受较大的步长(学习率),以较快的速度进行梯度下降。当收敛时,我们希望步长小一点,并且在最小值附近小幅摆动。假设模型已经接近梯度较小的区域,若保持原来的学习率,只能在最优点附近徘徊。如果降低学习率,目标函数能够进一步降低,有助于算法的收敛,更容易接近最优解。
常用的学习率衰减的方法:
优点:速度比Batch Gradient Descent快
随机选择样例有利于避免重复多余的样例和对参数更新较少贡献的样例
可以大大减小收敛所需要的迭代次数,同时可以使收敛到的结果更加接近梯度下降的效果。
线性判别分析(LDA)中,我们最想要优化的两个数值是什么
最大化类间均值,最小化类内方差
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。LDA的基本思想:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点中心尽可能远离。更简单的概括为一句话,就是“投影后类内方差最小,类间方差最大
类别不平衡会带来什么影响,如何有效处理类别不平衡的问题
如果不同类别的训练样例数目稍有差别,通常影响不大,但若差别很大,则会对学习过程造成困扰。例如有998个反例,但是正例只有2个,那么学习方法只需要返回一个永远将新样本预测为反例的学习器,就能达到99.8%的精度;然而这样的学习器往往没有价值,因为它不能预测出任何正例。
类别不平衡(class-imbalance)就是指分类任务中不同类别的训练样例数目差别很大的情况。
欠采样方法:直接对训练集中多数类样本进行“欠采样”(undersampling),即去除一些多数类中的样本使得正例、反例数目接近,然后再进行学习。
过采样方法:对训练集里的少数类进行“过采样”(oversampling),即增加一些少数类样本使得正、反例数目接近,然后再进行学习。
代价敏感学习(cost-sensitive learning):采样算法从数据层面解决不平衡数据的学习问题;在算法层面上解决不平衡数据学习的方法主要是基于代价敏感学习算法
回归任务中最常用的性能量度
均方误差
什么是假设检验?
假设检验是先对总体参数提出一个假设值,然后利用样本信息判断这一假设是否成立
那什么是假设呢?顾名思义,假设就是我们对于数据所在“总体”的一些假定,比如其数据的概率分布, 比如说总体的一些统计特征,均值,方差等等, 又比如总体的趋势变化特征(ordinal的数据),上升下降,甚至严格单调上升下降,当然这里推广一下还有Rank的变化。
那为什么要有这些假设呢?
因为是想要对数据的总体趋势有一定的直观的了解,而且这种直观的了解可以被方便地量化验证!
这里就引出了假设检验的中的第二个关键词,“检验”!
那么什么是检验呢?顾名思义,检验就是我们根据已有的“样本”对已经被假设的内容进行确认的过程, 比如我们对数据总体的分布进行假设,而现在要通过已有数据的empirical分布来验证其是否大概率来自于一个我们已知特性的分布,比如是不是正态分布的呀!
评价一个模型的好坏一般用什么来评价
评价分类结果:精准度、混淆矩阵、精准率、召回率、F1 Score、ROC曲线,AUC值等
评价回归结果:MSE、RMSE、MAE、R Squared,调整 R Squared
如果觉得《大数据与人工智能实验室【-05-08】》对你有帮助,请点赞、收藏,并留下你的观点哦!