一步引发数据量(模型中的权重越多,高效训练所需的数据就越多)和计算量问题(权重越大,训练和使用模型所需的计算就越多,这很容易超出硬件的能力范围)。
●矢量之间缺乏有意义的联系
对于在索引1234处设为1以表示“教父”的矢量而言,与在索引238处设为1以表示“红楼梦”的矢量以及与在索引50430处设为1以表示“美国往事”的矢量,看不出有什么“邻近”的意思。
上述问题的解决方案是使用嵌套,也就是将大型稀疏矢量映射到一个保留语义关系的低维空间,将语义上相似的项归到一起,并将相异项分开。
10.4.3 获取嵌套
一般来说,当我们具有稀疏数据时,可以创建一个嵌套单元,这个嵌套单元其实是大小为d的一个特殊类型的隐藏单元。此嵌套层可与任何其他特征和隐藏层组合。和任何DNN中一样,最终层将是要进行优化的损失函数。例如,假设我们正在执行协同过滤,目标是根据其他用户的兴趣预测某位用户的兴趣。我们可以将这个问题作为监督式学习问题进行建模,具体做法是随机选取(或留出)用户观看过的一小部分影片作为正类别标签,再优化Softmax损失,如图10-55所示。
10.4.4 代码实例
在本节中,我们使用影评文本数据(来自ACL2011IMDB数据集)进行嵌入。这些数据已被处理成tf.Example格式。我们将影评字符串数据转换为稀疏特征矢量,使用稀疏特征矢量实现情感分析线性模型。我们通过将数据投射到二维空间的嵌入来实现情感分析DNN模型。将嵌入可视化,以便查看模型学到的词语之间的关系。
先导入依赖项,并下载训练数据和测试数据。tf.keras中包含一个文件下载和缓存工具,
人工智能与大数据技术导论
360