神经网络简介:
常见激活函数:
s型函数
ReLU(修正线性单元激活函数)
添加特征工程、修改层数、修改神经元数、修改学习速率、正则化率、激活函数等都可以影响模型输出
训练神经网络:
很多情况会导致反向传播算法出错:
梯度消失:当较低层的梯度逐渐消失到0时,这些层的训练速度很慢(ReLU激活函数有助于防止梯度消失)
梯度爆炸:网络中的权重过大,梯度过大难以收敛(降低学习速率)
ReLU单元消失:(降低学习速率)
丢弃正则化(另一种正则化):在梯度下降法的每一步中随机丢弃一些神经单元(丢弃越多正则化越强)
多类别神经网络:一对多
softmax:多类别的概率相加是1;softmax层紧挨着输出层,拥有与输出层相同的节点数
嵌套Embedding:协同过滤
在二位空间中排列影片:最终有意义的是空间中各个影片之间的距离,而不是单个影片在任意维度上的坐标
分类数据:最高效表示方式是使用稀疏张量
网络的规模
巨型输入矢量意味着神经网络的对应权重数目会极其庞大。如果您的词汇表内有 M 个字词,而神经网络输入层上方的第一层内有 N 个节点,您便需要为该层训练 MxN 个权重。权重数目过大会进一步引发以下问题:
数据量:模型中的权重越多,高效训练所需的数据就越多。
计算量:权重越多,训练和使用模型所需的计算就越多。这很容易就会超出您硬件的能力范围。
矢量之间缺乏有意义的联系
如果您已将 RGB 通道的像素值馈入到图片分类器中,分析“邻近”值便行得通。不管是从语义上来看,还是从矢量之间的几何距离来看,红蓝色与纯蓝色都是邻近的。不过,对于在索引 1247 处设为 1 以表示“马”的矢量而言,如果说它与在索引 238 处设为 1 以表示“电视机”的矢量不够邻近,那么它与在索引 50430 处设为 1 以表示“羚羊”的矢量亦然。
上述问题的解决方案就是使用嵌套:将大型稀疏矩阵映射到一个保留语义关系的低维空间
嵌套:转换到低维空间
收缩网络
尽管我们需要足够的维度来编码丰富的语义关系,但我们也需要足够小的嵌套空间来更快速地训练我们的系统。实用嵌套的量级大致有数百个维度。这可能比您在自然语言任务中使用的词汇规模要小好几个数量级。
嵌套充当查询表
嵌套是一个矩阵,每列表示您词汇中的一项所对应的矢量。要获得某个词汇项的密集矢量,您可以检索该项所对应的列。
嵌套:获取嵌套
标准降维技术;word2vec
将嵌套训练为大型模型的一部分: