第十二章 应用
中文官网
英文原版
2020-2-29 深度学习笔记12 - 深度学习应用 1(大规模深度学习)
2020-3-1 深度学习笔记12 - 深度学习应用 2(计算机视觉,语音识别)
2020-3-2 深度学习笔记12 - 深度学习应用 3(自然语言处理NLP - n-gram / 神经语言模型NNLM / 高维输出 / 结合 n-gram 和神经语言模型 / 神经机器翻译)
1-推荐系统
机器学习主要应用之一是向潜在用户或客户推荐项目。 这可以分为两种主要的应用:在线广告和项目建议(通常这些建议的目的仍然是为了销售产品)。推荐系统可以预测一些行为的概率(用户购买产品或该行为的一些代替)或预期增益(其可取决于产品的价值)。
通常,这种关联问题可以作为监督学习问题
来处理:给出一些关于项目和关于用户的信息,预测感兴趣的行为(用户点击广告、输入评级、点击”喜欢”按钮、 购买产品,在产品上花钱、花时间访问产品页面等)。 算法最终会归结到回归问题(预测一些条件期望值)或概率分类问题(预测一些离散事件的条件概率)。
早期推荐系统的工作依赖于这些预测输入的最小信息:用户ID和项目ID。 在这种情况下,唯一的泛化方式依赖于不同用户或不同项目的目标变量值之间的模式相似性。 假设用户1和用户2都喜欢项目A,B和C. 由此,我们可以推断出用户1和用户2具有类似的口味。 如果用户1喜欢项目D,那么这可以强烈提示用户2也喜欢D。 基于此原理的算法称为协同过滤
。
第一次用于协同过滤的神经网络之一是基于RBM的无向概率模型 。
但是,协同过滤系统有一个基本限制:当引入新项目或新用户时,缺乏评级历史意味着无法评估其与其他项目或用户的相似性,或者说无法评估新的用户和现有项目的联系。 这被称为冷启动推荐问题
。 解决冷启动推荐问题的一般方式是引入单个用户和项目的额外信息。 例如,该额外信息可以是用户简要信息或每个项目的特征。 使用这种信息的系统被称为基于内容的推荐系统
(content-based recommender system)。 从丰富的用户特征或项目特征集到嵌入的映射可以通过深度学习架构学习。
当向用户推荐时,会产生超出普通监督学习范围的问题,并进入强化学习
( reinforcement learning)的领域。
强化学习需要权衡探索与利用。
(1) 利用
指的是从目前学到的最好策略采取动作,也就是我们所知的将获得高奖励的动作。
(2) 探索
是指采取行动以获得更多的训练数据。
如果我们知道给定上下文 x x x,动作 a a a给予我们1的奖励,但我们不知道这是否是最好的奖励。 我们可能想利用我们目前的策略,并继续采取行动 a a a相对肯定地获得1的奖励。 然而,我们也可能想通过尝试动作 a ’ a’ a’来探索。 我们不知道尝试动作 a ’ a’ a’会发生什么。 我们希望得到2的奖励,但有获得0奖励的风险。 无论如何,我们至少获得了一些知识。
监督学习在探索或利用之间没有权衡,因为监督信号总是指定哪个输出对于每个输入是正确的。 我们总是知道标签是最好的输出,没有必要尝试不同的输出来确定是否优于模型当前的输出 。
除了权衡探索和利用之外,强化学习背景下出现的另一个困难是难以评估和比较不同的策略。 强化学习包括学习者和环境之间的相互作用。 这个反馈回路意味着使用固定的测试集输入评估学习者的表现不是直接的。 策略本身确定将看到哪些输入。
2-知识表示、推理和回答
因为使用符号和词嵌入,深度学习方法在语言模型、机器翻译和自然语言处理方面非常成功。搜索引擎已经使用机器学习来实现这一目的,但是要改进这些更高级的表示还有许多工作要做。
许多应用中需要表示关系和推理。 我们如何在神经网络中做到这一点?
(1)训练数据
机器学习模型当然需要训练数据。
我们可以推断非结构化自然语言组成的训练数据集中实体之间的关系,也可以使用明确定义关系的结构化数据库, 这些数据库的共同结构是关系型数据库。
当数据库旨在将日常生活中常识或关于应用领域的专业知识传达给人工智能系统时,我们将这种数据库称为知识库
。
实体和关系的表示可以将知识库中的每个三元组作为训练样本来学习,并且以最大化捕获它们的联合分布为训练目标。
关于实体和关系,一个有趣的研究方向是确定如何训练分布式表示才能捕获两个实体之间的关系。
数学中,二元关系是一组有序的对象对。 集合中的对具有这种关系,而那些不在集合中的对则没有。
例如,我们可以在实体集 1 , 2 , 3 { 1, 2, 3 } 1,2,3上定义关系”小于”来定义有序对的集合 S = { ( 1 , 2 ) , ( 1 , 3 ) , ( 2 , 3 ) } S =\{ (1, 2), (1, 3), (2, 3) \} S={(1,2),(1,3),(2,3)}。
一旦这个关系被定义,我们可以像动词一样使用它。 因为 ( 1 , 2 ) ∈ S (1, 2) \in S (1,2)∈S,我们说1小于2。 因为 ( 2 , 1 ) ∉ S (2, 1) \not \in S (2,1)∈S,我们不能说2小于1。
当然,彼此相关的实体(entities)不必是数字。 我们可以定义关系(relation) ”is_a_type_of“ 包含如(狗,哺乳动物)的元组(tuples)。
在AI的背景下,我们将关系看作句法上简单且高度结构化的语言。 关系起到动词的作用,而关系(relation)的两个参数发挥着主体(subject)和客体( object)的作用。 这些句子是一个三元组标记的形式: ( s u b j e c t , v e r b , o b j e c t ) (subject,verb,object) (subject,verb,object)
其值是 ( e n t i t y i , r e l a t i o n j , e n t i t y k ) (entity_i,relation_j,entity_k) (entityi,relationj,entityk)
我们还可以定义属性,类似于关系的概念,但只需要一个参数: ( e n t i t y i , a t t r i b u t e j ) (entity_i,attribute_j) (entityi,attributej)
例如,我们可以定义 “有皮毛” 属性,并将其应用于像 ”狗“ 这样的实体。
继续来看神经网络表示关系和推理。
(2)训练的模型
除了训练数据,我们还需定义训练的模型族。 一种常见的方法是将神经语言模型扩展到模型实体和关系。神经语言模型学习提供每个词分布式表示的向量(Neural language models learn a vector that provides a distributed representation of each word)。 他们还通过学习这些向量的函数来学习词之间的相互作用,例如哪些词可能出现在词序列之后。
我们可以学习每个关系的嵌入向量将这种方法扩展到实体和关系。 事实上,建模语言和通过关系编码建模知识的联系非常接近,研究人员可以同时使用知识库和自然语言句子训练这样的实体表示,或组合来自多个关系型数据库的数据。
知识库和分布式表示的另一个应用是词义消歧
,这个任务决定在某些语境中哪个词的意义是恰当。
知识的关系结合一个推理过程和对自然语言的理解可以让我们建立一个一般的问答系统。 一般的问答系统必须能处理输入信息并记住重要的事实,并以之后能检索和推理的方式组织。