神经网络与深度学习-4( 二 )


风格迁移常用的损失函数由三部分组成:
内容损失
是合成图像与内容图像在内容特征上接近,内容代价函数:
【神经网络与深度学习-4】样式损失
令合成图像与样式图像在样式特征上接近 。可以认为相关性比较大的像素块为同一风格,相关参数的定义:
总变差损失
有助于减少合成图像中的噪点,综上总体代价函数为
三、循环神经网络与NLP 数据处理基础
特征编码
第1列表示年龄,是一个数值特征;
第2列表示性别,是一个只有一位(0,1)的特征0 -> Male, 1 ->
第3列表示国籍,目前有197个国家1 -> US, 2 -> China, …;可以用一个整数来表示,或者用一个独热向量来表示, 如US: [1,0, ….,0] 。数值特征不适合表示类别,因此一般使用独热编码 。国家编码从1开始,1~197,因为实际国籍有可能不填(对应0) 。
总结:使用199维特征向量表达一个人的特征:
文本处理
第一步:文本切分 ()
给定文本片段,如: S = “… to be or not to be…”.
将文本切分为单词序列: L = […, to, be, or, not, to, be, …]
第二步:统计词频
创建一个字典 (实际中经常使用Hash 表) 进行词频统计,初始字典为空 。
遍历文本,并按如下更新字典: ? 如果单词不再字典中,加入该单词 (, 1) ? 否则将其词频加1,直到完成整个遍历 。按照词频降序进行排序,将词频索引化,如果词汇太多,则只保留排序在前 的k个单词 (如取 = 10000) 。
第三步:独热编码
将每一个词映射到索引号上
需要时,将索引转换为独热编码
词典上没有的词(低频词或 拼写错误,直接忽略,或编码为0)
文本预处理与词嵌入
文本预处理
一篇文章可以被简单地看作一串单词序列,甚至是一串字符序列 。我们将 解析文本的常见预处理步骤 。这些步骤通常包括:
1.将文本作为字符串加载到内存中 。

神经网络与深度学习-4

文章插图
2.将字符串切分为词元(如单词和字符) 。
3.建立一个字典,将拆分的词元映射到数字索引 。
4.将文本转换为数字索引序列,方便模型操作 。
第一步:读取数据集 以H.G.Well的时光机器为例,从中加载文本。这 是一个相当小的语料库,只有30000多个单词,而 现实中的文档集合可能会包含数十亿个单词。如 包含65 T数据 。
第二步:词汇切分
将原始文本以文本行为单位进行切分
第三步:构建词索引表
打印前几个高频词及索引
[('', 0), ('the', 1), ('i', 2), ('and', 3), ('of', 4), ('a', 5), ('to', 6), ('was', 7), ('in', 8), ('that', 9)]
将每一条文本行转换成一个数字索引列表
文本: ['the', 'time', '', 'by', 'h', 'g', 'wells']
索引: [1, 19, 50, 40, 2183, 2184, 400]
文 本 : ['', 'and', 'his', '', 'pale', 'face', 'was', '', 'and', '', 'the']
索引: [2186, 3, 25, 1044, 362, 113, 7, 1421, 3, 1045, 1]
文本嵌入
如何将词映射成向量? 直接想法:使用之前所述的独热向量
问题:维数过高
词嵌入(word ) :将独热向量映射为低维向量
原始向量:维;映射后:维,? ; 映射矩阵: ×,根据训练数据学习得到
映射参数矩阵
词嵌入训练效果:
准确率74%(测试集),不好不差 。
RNN模型
建模序列数据
用RNN建模序列数据