基础知识(机器学习)(PyTorch)
数据操作
为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。通常,我们需要做两件重要的事:1
.获取数据;2
.将数据读入计算机后对其进行处理。如果没有某种方法来存储数据,那么获取数据是没有意义的。首先,我们介绍n
维数组,也称为张量(tensor
)。使用过Python
中NumPy
计算包。无论使用哪个深度学习框架,它的张量类(在MXNet
中为ndarray
,在PyTorch
和TensorFlow
中为Tensor
)都与Numpy
的ndarray
类似。但深度学习框架又比Numpy
的ndarray
多一些重要功能:首先,GPU
很好地支持加速计算,而NumPy
仅支持CPU
计算;其次,张量类支持自动微分。这些功能使得张量类更适合深度学习。
数学符号&名词解释(机器学习)(PyTorch)
ScaNN进行高效检索服务(TensorFlow 构建推荐系统)
深度与交叉网络(TensorFlow 构建推荐系统)
介绍
深度与交叉网络(DCN
)旨在有效地学习显式的、有边界的交叉特征,你已经知道大而稀疏的特征空间极难训练。通常我们执行特征工程,包括设计交叉特征,这是非常具有挑战性且效率低下的。虽然在这种情况下可以使用其它神经网络,但这并不是最有效的办法。深度与交叉网络是专门为应对这一挑战而设计的。在深入了解DCN
之前,我们首先花一点时间回顾一下,什么是特征交叉?假设我们正在构建一个推荐系统来向客户销售搅拌机,那么我们客户过去的购买历史记录,例如购买的香蕉和购买的烹饪书籍或地理特征都是单一特征。如果一个人同时购买了香蕉和烹饪书籍,那么该客户将更有可能点击推荐的搅拌机。购买的香蕉和购买的烹饪书籍的组合被称为特征交叉,它提供了除单个特征之外附加交互信息。你可以添加更多交叉特征。在真实的推荐系统当中,我们通常拥有大而稀疏的特征空间,因此,在这种情况下识别有效的特征,通常需要执行特征工程或详尽的搜索,这是非常低效的。
上下文特征 & 多任务学习(TensorFlow 构建推荐系统)
上下文特征
为了提高模型的准确性,我们可以做的事情之一是利用上下文特征,有时称为“辅助特征”。我们之前的例子并未包含上下文特征,而完全依赖于用户和项目ID
。在推荐模型中,除ID
之外的特征是否有用:
- 上下文的重要性:如果用户偏好在上下文和时间上相对平滑,则上下文特征可能不会提升模型的准确性。然而,如果用户偏好与上下文高度相关,则添加上下文将显着改进模型的准确性。例如,在决定是否推荐短片或电影时,星期几可能是一个重要特征:用户可能只有在一周内有时间观看短片内容,但可以在周末放松并欣赏完整的电影。类似地,查询时间戳可能在流行度动态建模中发挥重要作用:一部电影在发行时可能非常受欢迎,但之后很快就会衰退。相反,其他电影可能是常青树,让人重复地观看。
- 数据稀疏性:如果数据稀疏,使用非
ID
特征可能很关键。由于给定用户或项目的可用观察很少,模型可能难以估计每位用户或每个项目表示。为了构建准确的模型,必须使用项目类别、描述和图像等其他特征来帮助模型泛化到训练数据之外。这在冷启动情况下尤其重要,在冷启动情况下,某些项目或用户的可用数据相对较少。
排名模型(TensorFlow 构建推荐系统)
推荐系统通常由两个阶段组成:
- 检索阶段:负责从所有可能的候选者中选择数百个候选者的初始集合。检索模型的主要目标是有效地剔除用户不感兴趣的所有候选者。由于检索模型可能要处理数百万个候选者,因此它必须具有很高的计算效率。
- 排名阶段:获取检索模型的输出,并对它们进行微调以选择尽可能好的推荐。它的任务是将用户感兴趣的项目集缩小到可能的候选者的候选名单。
检索模型(TensorFlow 构建推荐系统)
TensorFlow Recommenders(TFRS)
是一个用于构建推荐(Recommender
)系统模型的库,在推荐(Recommender
)系统的整个构建流程 - 无论是数据准备、模型构建、训练、评估还是部署都可以起到很大的作用。TFRS
融合了多任务学习、特征交互建模和TPU
训练的研究成果。推荐系统通常有多个组件来进行检索、排名和后期排名。
推荐系统通常由两个阶段组成:
- 检索阶段:负责从所有可能的候选者中选择数百个候选者的初始集合。检索模型的主要目标是有效地剔除用户不感兴趣的所有候选者。由于检索模型可能要处理数百万个候选者,因此它必须具有很高的计算效率。
- 排名阶段:获取检索模型的输出,并对它们进行微调以选择尽可能好的推荐。它的任务是将用户感兴趣的项目集缩小到可能的候选者的候选名单。
内容过滤 & 协同过滤(TensorFlow 构建推荐系统)
图像数据增强(KerasCV)
KerasCV
可以轻松组装最先进的工业级数据增强管道,用于图像分类和对象检测任务。KerasCV
提供了广泛的预处理层,可实现常见的数据增强技术。最有用的三个层是keras_cv.layers.CutMix、keras_cv.layers.MixUp
和keras_cv.layers.RandAugment
。这些层几乎用于所有图像分类流程。