fast.ai 深度学习笔记:第一部分第五课

原文:Deep Learning 2: Part 1 Lesson 5

作者:Hiromi Suenaga

一,引言

没有足够的关于结构化深度学习的出版物,但它肯定出现在行业中:

结构化深度学习,作者:Kerem Turgutlu @datascience.com

你可以使用此工具从 Google 下载图片并解决自己的问题:

小型图像数据集的乐趣(第2部分),作者:Nikhil B @datascience.com

如何训练神经网络的介绍(一篇伟大的技术写作):

我们如何“训练”神经网络?,由 Vitaly Bushaev @datascience.com

学生们在 Kaggle 幼苗分类比赛中与 Jeremy 竞争。

II. 协同过滤 - 使用 MovieLens 数据集

讨论的笔记本可以在这里找到(lesson5-movielens.ipynb)。

我们来看看数据。 我们将使用userId (类别), movieId (类别)和rating(因变量)进行建模。

ratings = pd.read_csv(path+'ratings.csv')
ratings.head() 

fast.ai 深度学习笔记:第一部分第五课

为 Excel 创建子集

我们创建了最受欢迎的电影和大多数电影*粉的交叉表,我们将其复制到 Excel 中进行可视化。

g=ratings.groupby('userId')['rating'].count()  
topUsers=g.sort_values(ascending=False)[:15] 

g=ratings.groupby('movieId')['rating'].count()  
topMovies=g.sort_values(ascending=False)[:15] 

top_r = ratings.join(topUsers, rsuffix='_r', how='inner', on='userId')
top_r = top_r.join(topMovies, rsuffix='_r', how='inner', on='movieId') 

pd.crosstab(top_r.userId, top_r.movieId, top_r.rating, aggfunc=np.sum) 

fast.ai 深度学习笔记:第一部分第五课

是包含上述信息的 excel 文件。 首先,我们将使用矩阵分解而不构建神经网络。

fast.ai 深度学习笔记:第一部分第五课

  • 蓝色单元格 - 实际评级
  • 紫色单元格 - 我们的预测
  • 红色单元格 - 我们的损失函数即均方根误差(RMSE)
  • 绿色单元格 - 电影嵌入(随机初始化)
  • 橙色单元格 - 用户嵌入(随机初始化)

每个预测是电影嵌入向量和用户嵌入向量的点积。 在线性代数术语中,它等于矩阵乘积,因为一个是行,一个是列。 如果没有实际评级,我们将预测设置为零(将其视为测试数据 - 而不是训练数据)。

fast.ai 深度学习笔记:第一部分第五课

然后我们使用梯度下降来减少损失。 Microsoft Excel 在加载项中有一个“求解器”,可以通过更改所选单元格来最小化变量(GRG Nonlinear是你要使用的方法)。

这可称为“浅学习”(与深度学习相反),因为没有非线性层或第二线性层。 那么我们直觉上做了什么呢? 每部电影的五个数字称为“嵌入”(潜在因式) - 第一个数字可能代表科幻和幻想的程度,第二个数字可能是电影使用了多少特效,第三个可能是对话驱动的程度。与之类似,每个用户还有 5 个数字,例如,表示用户喜欢幻想,特效和对话驱动的电影的程度。 我们的预测是这些向量的叉乘。 由于我们没有每个用户的每个电影评论,因此我们试图找出哪些电影与这部电影相似,以及其他用户评价其他电影,如何与这个用户评价这个电影类似(因此称为“协同”)。

我们如何处理新用户或新电影 - 我们是否需要重新训练模型? 我们现在没有时间来讨论这个问题,但基本上你需要有一个新的用户模型或最初会使用的新电影模型,随着时间的推移你需要重新训练模型。

阅读更多

上一篇:教你用Flash制作升降国旗动画效果


下一篇:用PS修复曝光过度照片示例教程