神经网络

1.为什么需要激活函数:
线性函数的组合还是线性函数,需要激活函数引入非线性。在隐藏层的节点传入下一层进行加权之前,经过激活函数的处理,激活函数为非线性函数。
2.常见的激活函数:
S型函数:(logistic中用的激活函数就是它)

sigmoid=11+ex s i g m o i d = 1 1 + e − x

修正线性单元激活函数 (ReLu函数)
ReLu=max(0,x) R e L u = m a x ( 0 , x )

3.反向传播失败的原因:

  • 梯度消失:靠近输入层的梯度消失,可以使用relu激活函数防止梯度消失
  • 梯度爆炸:如果网络中的权重过大,较低层的梯度会涉及许多大项的乘积,发生梯度爆炸,拟标准化可以降低学习效率,有助于防止梯度爆炸。
  • ReLU单元消失:一旦ReLU单元的加权和低于0,ReLU单元就会停滞,它会输出对网络输出没有任何贡献的0激活,而梯度在反向传播算法期间将无法再从中流出。由于梯度的来源被切断,ReLU的输入可能无法做出足够的改变来使加权和恢复到0以上。降低学习效率有助于防止ReLU单元消失。
    4.丢失正则化 正则化 - - 使模型简单
    在梯度下降法的每一步中随机丢弃一些网络单元,丢弃的越多,正则化效果就越强。
    0.0 = 无丢弃正则化
    1.0 = 丢弃所有内容,模型学不到任何规律
    0.0 和 1.0之间的值更有用
    标准化特征值
    我们希望特征值以0为中心,[-1,1]的范围通常效果比较好。有助于梯度下降法收敛,避免NaN陷阱,避免离群值。
    可以使用一些标准方法来标准化特征值:
    多类别神经网络
    1.首先可以利用二分类将多分类问题转换成二分类问题。
    2.可以借助深度神经网络,在该网络中,每个输出节点表示一个不同的类别,创建明显更加高效的一对多模型。
    n分类问题
    3.softmax函数:
    softmax为每个类别分配一个用小数表示的概率,这些用小数表示的概率相加之和必须是1.0。
    softmax函数公式为
    p(y=j|x)=ewTjx+bjkewTkx+bk p ( y = j | x ) = e w j T x + b j ∑ k e w k T x + b k

    4.softmax选项:
    完整softmax:上文中提到的softmax
    候选采样:softmax针对所有正类别标签计算概率,针对所有负类别标签的随机样本计算概率。
    softmax假设每个样本只是一个类别的成员
    如果为多标签,则必须用多个逻辑回归。

    协同过滤


    n维嵌套:把相似的样本放在某个维度上临近的位置。
    1.协同过滤是什么
    协同过滤是一项可以根据很多其他用户的兴趣,预测用户兴趣的任务。可以通过将样本嵌套到低维空间(使得相似的样本彼此临近)来实现。一个维度表示一个特征。
    根据两个样本在空间中的距离来衡量相似性。
    2.介绍分类数据和稀疏表示法
    分类数据是指用于表示一组有限选项中的一个或多个离散项的输入特征。
    分类数据的最高效表示方式是使用稀疏张量(一个含有极少非0元素的张量),是一个只含有部分样本id的向量,eg[1,2,99]
    将稀疏张量转换成数字矢量,用one-hot编码或词袋表示法
    词袋表示法:使用一个包含各个单词在大块文本出现次数的向量。类似于one-hot,one-hot对应的是一个词,只有一个维度处的值为1;词袋法对应的时大块文本,有n个维度处非0,并且值表示的时出现的次数,不一定是1。
    3.为什么需要嵌套?稀疏表示法的问题?
    网络的规模、矢量之间缺乏有意义的联系。
    使用嵌套将大型稀疏矢量映射到一个保留语义关系的低维空间。
    5.嵌套:转换到低维空间
    矢量空间中的位置(距离和方向)可对良好的嵌套中的语义进行编码。
    6.嵌套方法一:word2vec
    word2vec是google为了训练字词嵌套而研发的一种算法。word2vec基于分布假设,将语义上相似的字词映射到在几何图形上临近的嵌套矢量。
    分布假设指出,经常具有相同相邻字词的字词往往在语义上相似。
    word2vec通过训练神经网络来区分 实际共同出现的多组字词 与随机出现在一起的 字词,从此充分利用此类的上下文信息。输入层采用一种稀疏表示法用于组合一个目标字词与一个或多个上下文字词,这一层全连接层会连接到一个较小的隐藏层。
    在训练word2vec模型后,得到的是一组嵌套,借助输入层连接到隐藏层的权重,将字词的稀疏表示映射到小型矢量。这类嵌套可在其他分类器中重复利用。
    7.嵌套方法二:将嵌套训练为大型模型的一部分
    一般来说,当您具有稀疏数据(或者您想要嵌套的密集数据)时,您可以创建一个嵌套单元,这个嵌套单元其实是大小为d的一个特殊类型的隐藏层单元。

版权声明:本文为wangqi1113原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。