算法课程作业

一、把这个代码的网络结构化出来,画图出来

 

二、emb_sum这个函数的逻辑,用文字表达出来

 

三、minibatch + ranking model样本结合起来,评估一下效果

以a9a为训练集,利用train_3.py训练模型,在a8a上进行测试,评估指标AUC值为0.817251

四、模型对比

1.增加一层隐藏层,第一个隐藏层数据维度为32→20,第二个隐藏层数据维度为20→10。在a9a训练集上的最高精度为0.829。在a8a上进行测试,评估指标AUC值为0.804259。增加epoch至30,在a9a训练集上的最高精度为0.841。在a8a上进行测试,评估指标AUC值为0.831354。

2.增加一层隐藏层,第一个隐藏层数据维度为32→20,第二个隐藏层数据维度为20→10;并且在第一个隐藏层之后增加relu激活函数,在第二个隐藏层之后增加relu激活函数。在a9a训练集上的最高精度为0.8。在a8a上进行测试,评估指标AUC值为0.761151。增加epoch至30,在a9a训练集上的最高精度为0.852。在a8a上进行测试,评估指标AUC值为0.838551。

3.拓展字典维度至64维,增加两层隐藏层,第一个隐藏层数据维度为64→32,第二个隐藏层数据维度为32→20,第三个隐藏层数据维度为20→10。并在第一、二个隐藏层之后使用relu激活函数。在a9a训练集上的最高精度为0.799。在a8a上进行测试,评估指标AUC值为0.749009。增加epoch至30,在a9a训练集上的最高精度为0.855。在a8a上进行测试,评估指标AUC值为0.868145。

结论:随着适当增加网络的宽度和深度并添加激活函数,能够提高模型的性能,复杂的网络需要更多的训练轮数。

五、面试题

1、为什么选择batch size?

batch size能够解决全数据集训练时产生的以下问题,

  • 收敛的时间会变得很慢(我们就会需要更长的训练时间)
  • 内存占用会更大(如果数据量大的话,大多数人的硬件设备可能达不到这样的要求)

还能解决单样本训练时训练不稳定的问题。

2、为什么需要激活函数,各个常用激活函数的优点和缺点(Relu、Tanh、Sigmoid)?

可以引入非线性因素,对于理解复杂和非线性的函数具有重要作用。如果不使用激活函数,则输出信号只是一个简单的线性函数,神经网络就无法学习和模拟其他复杂类型的数据,比如图像、视频、语音等;
使用非线性激活函数,可以使网络更加强大,学习到复杂的任务,能够在输入和输出之间生成复杂的非线性映射;
可以把当前特征空间通过一定的线性映射转换到另一个空间。

Sigmoid的优点:(1)便于求导  (2)能压缩数据,保证幅度不会有问题

                缺点:(1)容易出现梯度消失  (2)幂运算耗时  (3)Sigmoid的输出不是0均值的,这会导致后层的神经元的输入是非0均值的信号,这会对梯度产生影响

Tanh的优点:(1)便于求导  (2)能压缩数据,保证幅度不会有问题  (3)输出是0均值的

             缺点:(1)容易出现梯度消失  (2)幂运算耗时 

ReLU的优点:(1)计算简单 (2)解决梯度消失的问题,收敛速度比sigmoid 和 tanh 快

             缺点:(1)神经元坏死现象  (2)ReLu的输出不是zero-centered  (3)不会对数据做幅度压缩,所以数据的幅度会随着模型层数的增加不断扩张

3、为什么激活函数需要非线性函数,如何选择激活函数?

假设我们正在做一项复杂任务,需要使用多层神经网络。然而如果每一层都使用线性变换,不管我们有多少层,最终输出的还是输入的线性变换。因此,线性函数只适用于容易解释的简单任务。

用于分类器时,Sigmoid函数或Softmax函数通常效果更好。由于梯度消失问题,有时要避免使用sigmoid和tanh函数。ReLU函数是一个通用的激活函数,目前在大多数情况下使用。如果神经网络中出现死神经元,可以使用Leaky ReLU或PReLU。

4、为什么Tanh收敛速度比Sigmoid快?

这与激活函数的求导有关:

tan{h}'\left ( x \right ) = 1-tanh\left ( x \right )^{2},其导数范围在(0,1]

sigmoid(x) = s(x)(1-s(x)),其导数范围在(0,1/4]

由此可见,tanh(x)梯度消失的问题比sigmoid(x)轻,所以tanh收敛速度比较快。

5、如何理解Relu激活函数的稀疏激活性?

当前,深度学习一个明确的目标是从数据变量中解离出关键因子。原始数据(以自然数据为主)中通常缠绕着高度密集的特征。然而,如果能够解开特征间缠绕的复杂关系,转换为稀疏特征,那么特征就有了鲁棒性(去掉了无关的噪声)。稀疏特征并不需要网络具有很强的处理线性不可分机制。那么在深度网络中,对非线性的依赖程度就可以缩一缩。一旦神经元与神经元之间改为线性激活,网络的非线性部分仅仅来自于神经元部分选择性激活。

对比大脑工作的95%稀疏性来看,现有的计算神经网络和生物神经网络还是有很大差距的。庆幸的是,ReLu只有负值才会被稀疏掉,即引入的稀疏性是可以训练调节的,是动态变化的。只要进行梯度训练,网络可以向误差减少的方向,自动调控稀疏比率,保证激活链上存在着合理数量的非零值。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值