2019-02-28 22:57:23 channelyoung 阅读数 819
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

深度学习硬件配置好开始环境安装了,系统是选择tensorflow官网要求范围的当前稳定版Ubuntu Desktop 18.04.2 LTS,剩余软件版本选择基本都是最新版。

进行安装深度学习软件前先安装必要的工具

sudo apt-get install vim openssh-server vsftpd freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
 软件 版本
系统 Ubuntu Desktop 18.04.2 LTS
1. 显卡驱动 418.43
python 3.6.7
2. CUDA 10.0
3. CUDNN 7.5.0.56
4. TensorFlow 1.13.1
5. NCCL 2.4.2
6. TensorRT 5.0.2.6

 

1. 显卡驱动

官网下载选择GeForce——GeForce RTX 20 Series——GeForce RTX 2080 Ti——Linux 64-bit——English  (US)——SEARCH,本地下载到文件NVIDIA-Linux-x86_64-418.43.run。

nouveau是Linux自带的第三方开源显卡驱动,安装nvidia驱动前禁用nouveau,

查看是否有nouveau启动,如果命令

lsmod | grep -i nouveau 

返回了结果显示意味着nouveau启动了,禁用nouveau驱动:

sudo vim /etc/modprobe.d/blacklist-nouveau.conf

在文件中添加

blacklist vga16fb
blacklist nouveau
blacklist rivafb
blacklist rivatv
blacklist nvidiafb

options nouveau modeset=0

执行更新上面配置

sudo update-initramfs -u

重启系统确认是否仍在执行

lsmod | grep -i nouveau 

如果之前已安装了旧版本显卡驱动,卸载老版本

sudo /usr/bin/nvidia-uninstall

执行安装命令

sudo sh NVIDIA-Linux-x86_64-418.43.run -no-opengl-files -no-x-checks -no-nouveau-check

检查驱动是否安装

nvidia-smi

显示如下信息那就成功了。

查看驱动版本

cat /proc/driver/nvidia/version

 

2. CUDA

官网下载选择CUDA Toolkit 10.0——Linux——x86_64——Ubuntu——18.04——runfile (local),本地下载到文件cuda_10.0.130_410.48_linux.run。

没官方对应的Ubuntu版本,需要查一下页面上Ubuntu版本的gcc、g++版本。

在本地安装对应版本的gcc、g++


sudo apt install gcc-5 g++-5

调整gcc、g++的默认版本

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 50 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 50 

如果之前已安装了旧版本CUDA,卸载老版本

sudo /usr/local/cuda-9.0/bin/uninstall_cuda_9.0.pl

卸载之后,会发现 /usr/local/cuda-9.0目录下仍然有文件存在,这是cudnn文件,所以还需要将cuda-9.0文件删除干净:

sudo rm -rf /usr/local/cuda-9.0

执行安装命令

sudo sh cuda_10.0.130_410.48_linux.run

accept——n(不安装驱动)——y(默认地址)

设置系统环境变量

sudo vim /etc/profile

在文件末尾添加

export CUDA_HOME=/usr/local/cuda-10.0
export PATH=$CUDA_HOME/bin:$PATH
export LD_LIBRARY_PATH=$CUDA_HOME/lib64:/usr/local/cuda/extras/CUPTI/lib64:$LD_LIBRARY_PATH

执行更新上面配置

source /etc/profile

检查CUDA是否安装

nvcc --version

显示如下信息那就成功了

cd $CUDA_HOME/samples/1_Utilities/deviceQuery
sudo make clean 
sudo make
./deviceQuery
 
cd ../bandwidthTest
sudo make clean 
sudo make
./bandwidthTest

Result = PASS代表验证成功。

 

3. CUDNN

官网下载选择I Agree To the Terms of the cuDNN Software License Agreement——Download cuDNN v7.5.0 (Feb 21, 2019), for CUDA 10.0——cuDNN Runtime Library for Ubuntu18.04 (Deb)——cuDNN Developer Library for Ubuntu18.04 (Deb)——cuDNN Code Samples and User Guide for Ubuntu18.04 (Deb),本地下载到文件libcudnn7_7.5.0.56-1+cuda10.0_amd64.deb、libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.deb、libcudnn7-doc_7.5.0.56-1+cuda10.0_amd64.deb。

执行安装命令

sudo dpkg -i libcudnn7_7.5.0.56-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-dev_7.5.0.56-1+cuda10.0_amd64.deb
sudo dpkg -i libcudnn7-doc_7.5.0.56-1+cuda10.0_amd64.deb

检查CUDNN是否安装

cd /usr/src/cudnn_samples_v7/mnistCUDNN
sudo make clean
sudo make
./mnistCUDNN

显示如下信息那就成功了

 

4. TensorFlow

官网下载选择版本

执行安装命令

pip3 install --upgrade tensorflow-gpu==1.13.1

检查TensorFlow是否安装

python代码

import tensorflow as tf
# Creates a graph.
a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
c = tf.matmul(a, b)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

显示如下信息那就成功了

 

5. NCCL

官网下载选择I Agree To the Terms of the Software License Agreement——Download NCCL v2.4.2, for CUDA 10.0, Jan 29,2019——Local installer for Ubuntu 18.04,本地下载到文件nccl-repo-ubuntu1804-2.4.2-ga-cuda10.0_1-1_amd64.deb。

执行安装命令

sudo dpkg -i nccl-repo-ubuntu1804-2.4.2-ga-cuda10.0_1-1_amd64.deb

检查NCCL是否安装

         官网下载测试源码

cd nccl-tests-master
make CUDA_HOME=/usr/local/cuda-10.0 NCCL_HOME=/usr
./build/all_reduce_perf -b 8 -e 128M -f 2 -g 2

显示如下信息那就成功了

 

6. TensorRT

官网下载选择I Agree To the Terms of the NVIDIA TensorRT License Agreement——Download NCCL v2.4.2, for CUDA 10.0, Jan 29,2019——TensorRT 5.0.2.6 GA for Ubuntu 1804 and CUDA 10.0 DEB local repo packages,本地下载到文件nv-tensorrt-repo-ubuntu1804-cuda10.0-trt5.0.2.6-ga-20181009_1-1_amd64.deb。

执行安装命令

sudo dpkg -i nv-tensorrt-repo-ubuntu1804-cuda10.0-trt5.0.2.6-ga-20181009_1-1_amd64.deb

 

 

 

 

2018-12-24 22:12:24 dqefd2e4f1 阅读数 67
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

现象:最近特别紧张,买了很多有关深度学习的书,目的是希望快速上手深度学习项目,然而现在一本书也没看。

情况:对深度学习,机器学习的理论知识有了大致了解,对CNN,RNN模型的运行机制有了部分认识。

诉求:希望按照自己的想法快速建立一个深度学习系统。

困惑:不知道如何快速建立一个深度学习系统,从哪里做起。

解决:我听说Keras可以快速建立一个深度学习系统,不知道是不是真的。

推荐博文:https://gitbook.cn/books/5994670facae7150950eb8b0/(零基本用keras快速搭建深度学习系统)

如果有哪位大虾有更好的建议,请留言!!!THANK YOU VERY MUCH!

2018-06-14 13:14:40 dearbaba_11 阅读数 672
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

  01.python数据分析与机器学习实战
    02.深度学习入门视频课程(上篇)
    03.深度学习入门视频课程(下篇-2017-11-06更新完毕)
    04.深度学习框架-Tensorflow案例实战视频课程(2017-11-06 更新完毕)
    05.深度学习项目实战-深度学习框架Caffe使用案例视频课程
    06.深度学习项目实战视频课程-人脸检测
    07.深度学习项目实战-关键点定位视频教程(2017-11-14更新完毕)
    08.自然语言处理word2vec
    09.决胜AI-强化学习实战系列视频课程
    10.Tensorflow项目实战视频课程-文本分类
    11.深度学习项目实战视频课程-StyleTransfer(基于Tensorflow)(2017-11-18更新完毕)
    12.深度学习顶级论文算法详解视频课程
    13.深度学习实战项目-利用RNN与LSTM网络原理进行唐诗生成视频课程
    14.机器学习对抗生成网络
    15.深度学习项目实战视频课程-Seq2Seq序列生模型
    16.机器学习-推荐系统

 

    17.机器学习经典案例

 

地址:https://www.javaxxz.com/thread-365251-1-1.html

2018-03-05 14:50:12 free356 阅读数 4989
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪

基于深度学习的推荐系统研究

论文信息:北京邮电大学   陈达  14年硕毕论

目的:深度网络学习算法应用到推荐系统

为此工作:

1)研究分析基于内容的推荐系统和基于协同过滤的推荐系统,包括基于相似度的最近邻方法朴素贝叶斯方法潜在因素的矩阵分解方法,分析了各自的优缺点

2)研究一个典型的深度网络模型——多层受限波兹曼机(DBN

3)将深度网络与传统协同过滤方法相结合,建立一个新的深度网络混合模型,采用有限步吉布斯采样的最小化散度差算法对深度模型的似然函数求解,可以训练一个深度网络系统

4)在多个数据集上,将此方法和传统方法进行对比,证明深度网络学习方法在特征提取上具有不错能力,用在推荐系统上比协同过滤方法有更好的抗噪性和有效性。 

内容一(传统算法优缺点)

1,基于内容的推荐算法:TF-IDF,朴素贝叶斯。

2,基于协同过滤的推荐算法:根据相似用户的最近邻,潜在因素的矩阵分解。

内容二(深度网络结构):

背景知识1神经网络的神经元,sigmoid神经元

              

                                    

对于一个单层的推断结构利用梯度下降的方式学习权值:

         

上述公式中,字母依次分别代表学习速率,0,1二值,推断的概率。

背景知识2波兹曼机

波兹曼机是由随机神经元函数(sigmoid)组成的随机机器,每个节点的状态只能是“开”和“关”两种状态,用01来表示,这里的01状态的意义是代表了模型会选取哪些节点来使用,处于激活状态的节点被使用,未处于激活状态的节点未被使用。节点的激活概率由可见层和隐藏层节点的分布函数计算。其神经元分成两部分功能组一一下面一层的可见层神经元和上面一层的隐含层祌经元。在网络的训练阶段所有的可见神经元都被钳制在环境所决定的特定状态,而隐藏神经元总是自由运行的。

 

背景知识3波兹曼机统计力学与吉布斯分布

有许多自由度的物理系统,它可以驻留在大量可能状态中的任何一个。P表示状态概率,E表示状态的能量(PE一一对应),当系统和周围环境处于热平衡状态时一个基本的状态的发生概率为:

 

其中T为幵尔文绝对摄氏度,K为波兹曼常数,再根据概率之和为1可以得到在某个状态E下联合概率分布函数:

 

上述分布即符合吉布斯分布。吉布斯分布一个重要的性质:能量低的状态比能量高的状态发生概率较高。

背景知识4受限波兹曼机

普通波兹曼机简化成了受限波兹曼机,受限波兹曼机隐含层与隐含层之间无连接,可见层与可见层之间无连接,如下:

 

在可见层和隐含层加入了偏好之后的受限波兹曼机的联合能量函数为:

 

其中i,j分别为可见层和隐含层神经元的个数,a可见层偏好,b为隐含层偏好,w为可见层和隐含层的连接权值。而可见层单元根据不同的应用情景有不同的取值范围和不同的神经元函数。

整个网络在状态X下的概率用能量函数表示:

 

这里注意vh为可见层向量和隐含层状态向量,状态X下的联合概率分布为:

 

由于隐含层与隐含层之间无连接,可见层与可见层之间无连接,更重要的性质是:当给定了可见层的数据之后隐含层之间是条件独立的,给定了隐含层的数据之后可见层之间是条件独立的。

当给定可见层状态时,隐含层的某一个单元处于“激活”态概率为:

 

当给定隐含层状态时,可见层某一单元处于“激活”态概率为:

 

背景知识5多层波兹曼机

 

该图的最下层为可见层V,可见层之上的均为隐含层H,在多层情况下以三层为例,整个网络的联合能量函数为:

 

网络在状态X下的联合概率

 

在深度置信网络中利用最顶两个隐含层作为无向的关键记忆层(如图的双向箭头),将关联记忆表征的信息可以通过网络的重构反应到整个网络的参数上去,这样就可以进行“重复”学习的过程。

J表示可见层的输入数据,通常来说波兹曼机的运行状态分为两个阶段:

1,正向推断,这时整个网络在钳制环境下即在输入数据的直接影响下运行;

2,负向阶段,这个阶段中网络自由运行,隐含层不断自行推断进行状态转移,并且没有环境输入。那么深度结构波兹曼机的整个网络快速学习权值过程大致如图所示:

 

上图显示了一个快速的学习过程,向上的箭头表示利用该层钳制的数据和权值正向推断的过程,向下的箭头表示作为生成模型,模型重构出来的数据,而且网络的参数是一层一层地向上学习,也就是说当底层参数学习完毕后,将底层向上正向推断的数据作为可见层数据,再向上正向推断学习。

理解参考:https://www.cnblogs.com/jhding/p/5687696.html

内容三(深度结构模型的推荐算法):

一:深度模型

将深度波兹曼机的模型和传统最近邻的方法相结合,利用深度波兹曼机对高维数据的特征抽象表达能力和最近邻直观的而快速的打分预测能力,组成一个新的模型,对己存在的方法进行改进和提升,使其能够充分利用两个模型中出色特点避免两者中的缺点,扬长避短。

 

绿色框部分代表深度学习结构,用模型对训练数据进行输入,并利用无监督学习的方法训练深度网络,该深度模型一共有四层,包括可见层v1,隐含层h1、隐含层h2和隐含层h3,而顶层与隐含层h3形成无向的关联记忆层。

当数据通过深度结构进行深层映射后,从原来的M维(M为输入数据的维度)变成了最顶层的K维数(K为深度模型最顶层神经元的维度),这样我们认为原来高维数据通过特征探测群进行映射后,将数据内部隐含的特征映射到K维空间中。

比如,对于电影打分数据,我们将映射后的K维空间可以理解成该用户对M部电影的偏好特征,1-K个维度分别代表用户喜爱某个演员的程度、喜欢某个类型影片的程度、喜欢某个导员的程度等等,在这K个维度上我们对每个用户的数据进行聚类或者相似度比较,则相似度比较的结果往往比用原始数据进行比较的准确度要高。

二:多层模型的训练方法

要确定这个模型要知道模型的三个参数,下面就围绕着参数的求解进行分析。

参数求解用到了似然函数的对数对参数求导。由于从可知,能量E和概率P是成反比的关系,所以通过最大化P,才能使能量值E最小。最大化似然函数常用的方法是梯度上升法,梯度上升法是指对参数进行修改按照以下公式:

 

通过求关于的导数,即,然后对原值进行修改。如此迭代使似然函数P最大,从而使能量E最小。

对数似然函数对参数求导分析:

首先是对数似然函数的格式: 表示模型的输入数据。然后对里的参数分别进行求导,详细的推导过程就不写了:

 

由于上面三式的第二项中都含有 中仍然含有参数,所以它是式中求不出来的。所以,有很多人就提出了一些通过采样逼近的方法来求每一个式子中的第二项。

求解的算法:

1 Gibbs采样算法

因为在上一章节末尾讲对参数的求导中仍然存在不可求项表示可见层节点的联合概率。所以,要想得到 的值,就得要逼近它,求它的近似值。

Gibbs采样的思想是虽然不知道一个样本数据的联合概率P(x),但是知道样本中每一个数据的条件概率 (假设每一个变量都服从一种概率分布),则我可以先求出每一个数据的条件概率值,得到x的任一状态 。然后,我用条件概率公式迭代对每一个数据求条件概率。最终,迭代k次的时候,x的某一状态将收敛于x的联合概率分布P(x)

对于RBM来讲,则执行过程如图3所示:

                

3 Gibbs采样过程

求解过程是:假设给我一个训练样本v0,根据公式  h0中每个节点的条件概率,再根据公式 v1 中每个节点的条件概率,然后依次迭代,直到执行K步(K足够大),此时的概率将收敛于P(v)的概率。如下所示:

                           

 2CD-k算法

CD算法是需要k次(k=1Gibbs采样对可见层节点进行重构得到可见层节点的概率分布。其思想是:假设给模型一个样本v0,通过求所有隐藏层节点的概率值,然后每一个概率值和随机数进行比较得到每一个隐藏层节点的状态,然后通过公式求每一个可见层节点的概率值,再由求每一个隐藏层节点的概率值。最后参数梯度的计算公式变为:

 

其中,μ是学习率,datarecon分别表示训练数据的概率分布和重构后的概率分布。

通过以上方法都可以求出参数的梯度来,由每一个参数的梯度对原参数值进行修改来使模型的能量减小。

内容四(MovieLens数据集实验):

Movielens数据集:943个用户,1682部电影,100000条评分。

该数据有四列,第一列为评价序号,序号数最大为1000000,第二列代表用户的ID,第三列代表项目的ID,第四列代表用户对该项目的评价,通常来说,评价一般分为15五个等级,用户对物品的喜爱程度由小到大。

1,数据预处理

在该数据中按照百分比抽样,形成训练数据和测试数据。将数据形成一个943*1682的矩阵形式。

2,算法设计与实践

对于每一个用户的数据,分别建模,输入到模型中迭代调整权值,于是对于任意一个输入,我们需要将用户的打分数据形成softmax结构的输入,这里我们采用一个三维矩阵uatrainF(k,uraw,col)来记录softmax模型,其中K代表该列中的第Ksoftmaxurawcol分别代表原始矩阵的行和列,当数据进入模型时将uatrainF(k,uraw,col)的第二维(用户)抽取出来,输入模型算法,如下:

 

上图表示了一个可见层为softmax的两层波兹曼机模型的训练算法流程图,在初始化阶段,我们需要对模型的众多参数进行初始化,这些参数包括:权值学习速率、可见层偏好学习速率、隐含层偏好、权值代价因子、权值记忆因子、以及连接权值参数、可见层偏好、隐含层偏好,这些随机初始化的方法通常利用均匀分布随机数,或者标准正态分布随机数。进入迭代之后,进行正向推断和反向推断

对深度模型的建模工作,可利用上述两层波兹曼机的建方法,只是除了在第一层和第二层网络上与上述方法相同,第二层到顶层,隐含层神经元釆用的都是普通的{0,1}二值的神经元图的过程称为两层之间的预训练那么深度结构在相邻的两层之间都会有预训练的过程,由于我们的训练数据并没有标签数据,于是该模型不同于DBN—样存在着微调反馈这一阶段。模型算法流程图如图所示:

 

在预学习阶段,下一层隐含层的输出均作为上一层隐含层的输入。,将原来高维数据通过无监督学习在低维度重新表征出来。其中该网络的H1H2H3的维度分别为1000,500250,V1的维度即为输入矩阵的列数1628关于每一层神经元的个数的确定可参考上述链接指出,深层网络的中间层神经元较多时效果较好。接下来,对该低维数据重新进行相似度计算利用基于相似度计算的方法进行数据重构。

3实验结果评价方法

采用均方根误差(RMSE)来衡量真实评分数据和预测的评分数据的差距。

 

 

内容论文改进):

1MATLAB上运行,内存不够。

2,在Hadoop平台上的并行化。

2019-07-24 12:09:06 muruan08 阅读数 51
  • 机器学习&深度学习系统实战!

    购买课程后,可扫码进入学习群,获取唐宇迪老师答疑 数学原理推导与案例实战紧密结合,由机器学习经典算法过度到深度学习的世界,结合深度学习两大主流框架Caffe与Tensorflow,选择经典项目实战人脸检测与验证码识别。原理推导,形象解读,案例实战缺一不可!具体课程内容涉及回归算法原理推导、决策树与随机森林、实战样本不均衡数据解决方案、支持向量机、Xgboost集成算法、神经网络基础、神经网络整体架构、卷积神经网络、深度学习框架--Tensorflow实战、案例实战--验证码识别、案例实战--人脸检测。 专属会员卡优惠链接:http://edu.csdn.net/lecturer/1079

    39627 人正在学习 去看看 唐宇迪


在简书上看到这一系列文章,非常喜欢,可惜排版不够好,且缺乏衔接,因此转录到这里,供随时查阅。
(全部链接来自简书–石晓文的学习日记

1、特征交叉系列

早期广告计算及推荐系统中,工业界常用LR来完成排序计算,因为LR是广义线性模型,特征之间缺乏交互,因此常使用人工组合特征的方案来深度挖掘特征,后渐渐衍生出FM,FFM等二项特征自动化交叉方案。近年来,由于深度学习的发展,大量自动化特征组合方案被研究探索并应用于推荐系统和广告计算中。
推荐系统遇上深度学习(一)–FM模型理论和实践
推荐系统遇上深度学习(二)–FFM模型理论和实践
推荐系统遇上深度学习(三)–DeepFM模型理论和实践
(DeepFM可以近似理解为Deep&Wide,当然其中Wide部分不再是LR而是FM)
推荐系统遇上深度学习(四)–多值离散特征的embedding解决方案
讲解了tf中tf.contrib.lookup.index_table_from_tensor方法,实际上就是将离散特征进行embedding方式的初始化并定义好跟idx关系,便于后续检索。
推荐系统遇上深度学习(五)–Deep&Cross Network模型理论和实践
跟DeepFM很像,但是FM的部分使用神经网络进行特征交叉
推荐系统遇上深度学习(六)–PNN模型理论和实践
感觉很多思想都是很类似的,PNN跟DeepFM也有类似之处,不同在于(1)PNN的两两特征交叉是使用两层网络来完成(最终归一化为一个D1长度的embedding向量),是基于特征embedding之后的向量计算出来的;而FM则是使用矩阵分解的方案,来表达两个特征的权重,是基于特征单值计算出来的。(2)PNN的交叉层和单层在浅层concat,最终一起进行若干个全连接计算,而DeepFM则对Deep进行深入计算,然后在倒数第二层直接将两者合并。
推荐系统遇上深度学习(七)–NFM模型理论和实践
推荐系统遇上深度学习(八)–AFM模型理论和实践
以上两个大同小异,都是基于FM和Deep的串行结构,留待以后研究。

2、召回

传统上讲,推荐的召回阶段多通过协同过滤、以及一些规则(热门、兴趣等)方式召回。目前深度学习领域大多数思考方向都是将item进行embedding,继而进行向量匹配再召回。方向多集中于网络设计,目标定义,以及线上快速召回的工程化方案。

a、embeding

推荐系统遇上深度学习(三十九)-推荐系统中召回策略演进!
简介:1、协同过滤;2、基于向量;3、基于树;
扩展阅读:基于任意深度学习+树状全库搜索的新一代推荐系统
推荐系统遇上深度学习(四十六)-阿里电商推荐中亿级商品的embedding策略这篇文章略语焉不详,没有详述SI的具体提取方法。需要阅读原文。可借鉴的地方:1、引入SI(Side Information)来解决冷启动问题;这个思路对于规范化商品表达(idmatching也有一定借鉴意义);2、使用不同SI不同权重的方案(权重需训练,还是拍一个?)3、随机游走策略构建物品间关系;3、Skip-gram思路训练网络(w2v的思路真是遍地开花啊)。
推荐系统遇上深度学习(三十六)–Learning and Transferring IDs Representation in E-commerce 这篇文章很赞,值得阅读原文。值得借鉴的地方:1、item2vec(又是w2v),并使用品牌id,产品id,店铺id等综合id作为item的表达,因此中间含有属性id到itemid的矩阵,这个就为属性表达item(冷启动)做了好铺垫;2、负采样,采用越热采样率越高的方案,有一点工程实现技巧;3、物品冷启动采用属性近似计算。另:用户冷启动采用了淘宝向量,这个在其他公司并没有可借鉴性不必考虑。

3、排序

a、传统思路

推荐系统遇上深度学习(十)–GBDT+LR融合方案实战
GBDT+LR是较为经典的排序算法,由Facebook提出。文中没有提到的是:这种双模型需要考虑的是线上工程切换问题。即双模型版本的同步维护。

b、深度学习

推荐系统遇上深度学习(十八)–探秘阿里之深度兴趣网络(DIN)浅析及实现
简介:1、利用了Local Attention机制;2、gAUC的评价指标;3、Dice激活函数(根据数据调整LeakRelu分割点);4、自适应性正则(根据featureId出现频次进行正则力度调整)

推荐系统遇上深度学习(四十八)-BST:将Transformer用于淘宝电商推荐简介:使用transformer模型,利用item,user,context和cross特征,对下一个商品进行ctr预估(有点怀疑是否上线应用)。值得借鉴的地方:1、使用(用户点击时间-推荐时间)作为position bias;2、使用leakyRelu做激活。(transformer相关资料:使用Excel通俗易懂理解Transformer!

3、E&E

EE问题(Exploration and Exploitation,探索与开发)是推荐系统及广告计算里较为常见的一个问题,从业务角度理解,主要目的是提升惊喜度,以防止用户审美疲劳。近年来已有比较成熟的解决方案。
推荐系统遇上深度学习(十二)–推荐系统中的EE问题及基本Bandit算法经典的UCB和汤普森采样方法。
推荐系统遇上深度学习(十三)–linUCB方法浅析及实现 UCB算法的升级版,考虑了在线特征,我对于LinUCB的理解是,在实际工程应用中,可以在CTR预估计算后的基础上,加上根据reward计算出的Delta值(Δ=αxt,aTAa1xa\Delta =\alpha \sqrt {x^{T}_{t,a}{A^{-1}_{a}}{x_{a}}} ),以加入LinUCB的扰动。

a、强化学习

  1. 推荐系统遇上深度学习(十四)–《DRN:A Deep Reinforcement Learning Framework for News Recommendation》 强化学习在新闻推荐领域的应用。在DQN基础上应用了Dueling-Double-DQN(相关学习资料参见:深度强化学习从入门到大师:进一步了解深度Q学习(第三部分*续)).同样地,这个模型只适用于排序阶段。
    值得借鉴的地方:1、比较合理地给出用户活跃度(可以使用规则手段),并使用活跃度作为未来奖励的一个评估手段;2、多样性的评估方法(ILS,使用item相似性来评估)3、Duel DQN网络的设计;4、在线更新方法。
    疑问:对于在线更新的方案细节不太理解,且缺乏工程化的构建方案。
  2. 推荐系统遇上深度学习(十五)–强化学习在京东推荐中的探索这篇论文的可借鉴之处,在于使用了模拟器来预估state+action的可能收益(通过状态-动作转移概率)。因为在传统ctr模型中,由于使用的正负样本是基于为用户已推荐的物品空间,实际上相对于全量空间,样本是有偏的。
    疑问:使用了list-wise来做排序(号称),但我认为实际上仍然是paire-wise,当每个物品单独打分且取最高打分的物品排在前面,并且打分与整体推荐中序列并无丝毫关联时,我认为所谓list-wise就都是pair-wise的。

4、指标

推荐系统遇上深度学习(九)–评价指标AUC原理及实践
AUC是ctr预估的常用离线评估指标,比precision和recall更健壮,能够应对样本不平衡的情况(尤其是ctr这种正样本超级少的情况)

深度学习框架汇总

阅读数 1486

没有更多推荐了,返回首页