2019年11月13日

摘要: 背景 假设现在有个商品点击预测的任务,有用户端特征性别、年龄、消费力等,商品侧特征价格、销量等,样本为0或者1,现在对特征进行one hot encode,如性别特征用二维表示,男为[1,0],女为[0,1],其他特征相同处理后拼接起来一共有n维,n是所有特征的类别数之和。 Logistic Reg 阅读全文
posted @ 2019-11-13 11:41 daniel-D 阅读(1568) 评论(0) 推荐(0) 编辑

2019年6月25日

摘要: RNN 一般神经网络隐层的计算是h=g(w * x),其中g是激活函数,相比于一般神经网络,RNN需要考虑之前序列的信息,因此它的隐藏h的计算除了当前输入还要考虑上一个状态的隐藏,h=g(w*x+w'*h'),其中h'是上一次计算的隐层,可见信息传递是通过隐层完成的。 LSTM 有上面普通RNN可以 阅读全文
posted @ 2019-06-25 12:01 daniel-D 阅读(1184) 评论(0) 推荐(0) 编辑

2019年6月11日

摘要: DQN利用深度学习对Q-learning的一个扩展,回顾上篇文章,Q-learning的核心在于Q(s,a)的建模。如果状态s非常复杂,很难通过一张表来存储所有的状态。 深度学习正好可以自动提取s的特征,所以我们只需要对Q(s,a)建立一个深度学习网络 但是s可能是一个极高维度的向量,a可能只低维度 阅读全文
posted @ 2019-06-11 17:30 daniel-D 阅读(722) 评论(0) 推荐(0) 编辑
摘要: 与Policy Gradients的不同之处在于,这两个算法评估某个状态s执行某个动作a的期望奖励,即Q(s,a) 与Policy Gradients的不同之处在于,这两个算法评估某个状态s执行某个动作a的期望奖励,即Q(s,a) Q(s,a) 有两种方法计算方法,第一种直接查表或者模型预估,Q(s 阅读全文
posted @ 2019-06-11 12:07 daniel-D 阅读(670) 评论(0) 推荐(0) 编辑
摘要: 强化学习与监督学习的区别在于,监督学习的每条样本都有一个独立的label,而强化学习的奖励(label)是有延后性,往往需要等这个回合结束才知道输赢 Policy Gradients(PG)计算某个状态下所有策略的分布概率,类似于经典分类问题给每个类别预测一个概率,好的PG应该给优良的策略分配较高的 阅读全文
posted @ 2019-06-11 10:49 daniel-D 阅读(735) 评论(0) 推荐(0) 编辑

2017年12月17日

摘要: 本文的创新点在于利用了UserNet,但是UseNet带来的一个弊端是,无法像之前两篇文章里将相同图片的样本聚合起来减少CNN部分的计算,因为UserNet的输入平均是37张图片的排列组合。 阅读全文
posted @ 2017-12-17 11:00 daniel-D 阅读(1644) 评论(0) 推荐(0) 编辑

2017年12月16日

摘要: Deep CTR Prediction in Display Advertising 这篇文章发表在 ACM MM16,与腾讯那篇“Image Feature Learning for Cold Start Problem in Display Advertising” 不同的是,这篇文章把特征提取与点击率预估整合在一起,做到了end to end的训练。 阅读全文
posted @ 2017-12-16 11:41 daniel-D 阅读(1823) 评论(0) 推荐(0) 编辑

2017年12月14日

摘要: CNN 是一个简单的网络结构,初学者一般从MNIST入手,提及CNN第一印象可能只有经典的图像分类的那个model。深入了解才会发现,学术圈和工业界是如何通过稍稍改变 Feature Map 之后的结构和目标函数等实现各种复杂任务,这其中迸发的想象力让人激动。 阅读全文
posted @ 2017-12-14 15:28 daniel-D 阅读(2649) 评论(0) 推荐(1) 编辑

2017年11月30日

摘要: 以margin作为横轴,黑色表示分类loss,红色表示log loss,蓝色表示 hinge loss,绿色表示 square error,可以看到随着 margin 变大,loss 总体是单调递减的,但是 squared error 超过1后会递增 阅读全文
posted @ 2017-11-30 21:17 daniel-D 阅读(5302) 评论(0) 推荐(1) 编辑

2017年11月24日

摘要: x、o分别表示label为负和正的样本,划分为上下两列,假设模型预测值是一个连续值(如为正的概率),把正负样本按照预测值从低到高分别排列好。一个好的模型,应该是左上角分布较密集,表示很多负样本预测值较小 阅读全文
posted @ 2017-11-24 12:12 daniel-D 阅读(6593) 评论(1) 推荐(0) 编辑

2017年11月21日

摘要: 根据某时刻房价相关数据,预测区域内该时刻任一街区的平均房价 阅读全文
posted @ 2017-11-21 11:02 daniel-D 阅读(10927) 评论(1) 推荐(2) 编辑

2016年6月21日

摘要: 博客地址:http://www.cnblogs.com/daniel-D/p/5602254.html 新浪微博:http://weibo.com/u/2786597434 欢迎多多交流~ Main Idea 新浪微博:http://weibo.com/u/2786597434 欢迎多多交流~ Ma 阅读全文
posted @ 2016-06-21 00:08 daniel-D 阅读(6457) 评论(0) 推荐(0) 编辑

2014年6月28日

摘要: 主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 《Functional Programming Principles in Scala》。3. Data and Abstraction3.1 Class Hierarchies这一集字幕不同步-,-,听... 阅读全文
posted @ 2014-06-28 16:45 daniel-D 阅读(814) 评论(0) 推荐(0) 编辑

2014年6月27日

摘要: 主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 《Functional Programming Principles in Scala》。2. Higher Order Functions把其他函数作为参数或者作为返回值,就是 higher order... 阅读全文
posted @ 2014-06-27 22:44 daniel-D 阅读(790) 评论(0) 推荐(0) 编辑
摘要: 主要来自 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 《Functional Programming Principles in Scala》。很久以前写过一个非常简单的 python lambda 函数博客,里头有 filter,map,reduce等,是... 阅读全文
posted @ 2014-06-27 22:41 daniel-D 阅读(1909) 评论(0) 推荐(0) 编辑

2014年4月30日

摘要: scikit-learn——快速入门sklearn 快速入门环境:ubuntu 12.04, 64 bitspython 2.7sklearn 0.14好几个月没有发博客了,平时的笔记都随意记在印象笔记中。现在闲着有空,把 sklearn 的基本模型学一学。实际上 scikit-learn 的学习材... 阅读全文
posted @ 2014-04-30 16:38 daniel-D 阅读(6289) 评论(0) 推荐(1) 编辑

2013年10月25日

摘要: 1. Introduction第一次接触到 Markov Chain Monte Carlo (MCMC) 是在 theano 的 deep learning tutorial 里面讲解到的 RBM 用到了 Gibbs sampling,当时因为要赶着做项目,虽然一头雾水,但是也没没有时间仔细看。趁目前比较清闲,把 machine learning 里面的 sampling methods 理一理,发现内容还真不少,有些知识本人也是一知半解,所以这篇博客不可能面面俱到详细讲解所有的 sampling methods,而是着重讲一下这个号称二十世纪 top 10 之一的算法—— Markov c 阅读全文
posted @ 2013-10-25 23:07 daniel-D 阅读(36693) 评论(6) 推荐(9) 编辑

2013年10月19日

摘要: 1. 前言熟悉机器学习的童鞋都知道,优化方法是其中一个非常重要的话题,最常见的情形就是利用目标函数的导数通过多次迭代来求解无约束最优化问题。实现简单,coding 方便,是训练模型的必备利器之一。这篇博客主要总结一下使用导数的最优化方法的几个基本方法,梳理梳理相关的数学知识,本人也是一边写一边学,如... 阅读全文
posted @ 2013-10-19 14:57 daniel-D 阅读(17772) 评论(8) 推荐(11) 编辑

2013年8月7日

摘要: 在机器学习和数据挖掘中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别。最常见的是数据分析中的相关分析,数据挖掘中的分类和聚类算法,如 K 最近邻(KNN)和 K 均值(K-Means)等等。根据数据特性的不同,可以采用不同的度量方法。一般而言,定义一个距离函数 d(x,y), 需要满足下面几个准则:1) d(x,x) = 0 // 到自己的距离为02) d(x,y) >= 0 // 距离非负3) d(x,y) = d(y,x) // 对称性: 如果 A 到 B 距离是 a,那么 B 到 A 的距离也应该是 a4) d(x,k)... 阅读全文
posted @ 2013-08-07 22:33 daniel-D 阅读(41455) 评论(13) 推荐(19) 编辑

2013年8月5日

摘要: SVM 是一块很大的内容,网上有写得非常精彩的博客。这篇博客目的不是详细阐述每一个理论和细节,而在于在不丢失重要推导步骤的条件下从宏观上把握 SVM 的思路。1. 问题由来SVM (支持向量机) 的主要思想是找到几何间隔最大的超平面对数据进行正确划分,与一般的线性分类器相比,这样的超平面理论上对未知的新实例具有更好的分类能力。公式表示如下:: 所有点中最小的几何间隔, 实际上就是支持向量上的点的几何间隔: 训练样本及对应标签,, 作用是将第 i 个样本点的几何间隔转化为正数公式的意思是假设每个训练样本点的几何间隔至少是, 求的最大值。由于几何间隔(没帽子)和函数间隔(有帽子)的关系是:最大化可 阅读全文
posted @ 2013-08-05 09:16 daniel-D 阅读(6475) 评论(0) 推荐(1) 编辑

2013年8月1日

摘要: 声明之前虽然听过压缩感知和稀疏表示,实际上前两天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步。主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro第 9 课。由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈!1. From Local to Global Treatment图片尺寸有大有小,在 DCT 变换中,我们一般取 8×8 的方块作为一组 64 维的变换信号,在稀疏表示中,我们同样也不能把整张 阅读全文
posted @ 2013-08-01 21:13 daniel-D 阅读(5569) 评论(0) 推荐(0) 编辑

2013年7月29日

摘要: 声明之前虽然听过压缩感知和稀疏表示,实际上昨天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步。主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro第 9 课。由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈!1. Uniqueness假设我们已知字典矩阵 D 和稀疏向量 a, 计算出一个信号 x,即 Da = x, x存在一个关于 D 的稀疏表示。反过来现在已知前面的 D 和 x,根据 L0 的优化问题,可以归 阅读全文
posted @ 2013-07-29 21:46 daniel-D 阅读(13291) 评论(0) 推荐(1) 编辑
摘要: 声明之前虽然听过压缩感知和稀疏表示,实际上昨天才正式着手开始了解,纯属新手,如有错误,敬请指出,共同进步。主要学习资料是 Coursera 上 Duke 大学的公开课——Image and video processing, by Pro.Guillermo Sapiro第 9 课。由于对图像处理的了解也来自与该课程,没正经儿看过几本图像方面的书籍,有些术语只能用视频中的英文来表达,见谅哈!1. Denoising 与 MAP故事从 denoising 说起,话说手头上有一张含有噪音的图片 Lena,如何除去噪音得到好的 clean image 呢?对于上面的问题,用 x 值表示某个像素的灰度 阅读全文
posted @ 2013-07-29 11:31 daniel-D 阅读(23973) 评论(7) 推荐(4) 编辑

2013年7月27日

摘要: 1. 病态系统现在有线性系统: Ax = b, 解方程很容易得到解为:x1 = -100, x2 = -200. 如果在样本采集时存在一个微小的误差,比如,将 A 矩阵的系数 400 改变成 401:则得到一个截然不同的解:x1 = 40000, x2 = 79800.当解集 x 对 A 和 b 的系数高度敏感,那么这样的方程组就是病态的 (ill-conditioned).2. 条件数那么,如何评价一个方程组是病态还是非病态的呢?在此之前,需要了解矩阵和向量的 norm, 这里具体是计算很简单的 infinity norm, 即找行绝对值之和最大,举个例子:infinity norm 具有三 阅读全文
posted @ 2013-07-27 17:45 daniel-D 阅读(16333) 评论(1) 推荐(2) 编辑

2013年7月26日

摘要: 前面我们讲了 QR 分解有一些优良的特性,但是 QR 分解仅仅是对矩阵的行进行操作(左乘一个酉矩阵),可以得到列空间。这一小节的 SVD 分解则是将行与列同等看待,既左乘酉矩阵,又右乘酉矩阵,可以得出更有意思的信息。奇异值分解( SVD, Singular Value Decomposition )... 阅读全文
posted @ 2013-07-26 21:13 daniel-D 阅读(10474) 评论(1) 推荐(0) 编辑

2013年7月23日

摘要: 1. QR 分解的形式QR 分解是把矩阵分解成一个正交矩阵与一个上三角矩阵的积。QR 分解经常用来解线性最小二乘法问题。QR 分解也是特定特征值算法即QR算法的基础。用图可以将分解形象地表示成:其中, Q 是一个标准正交方阵, R 是上三角矩阵。2. QR 分解的求解QR 分解的实际计算有很多方法,例如 Givens 旋转、Householder 变换,以及 Gram-Schmidt 正交化等等。每一种方法都有其优点和不足。上一篇博客介绍了 Givens 旋转和 Householder 变换, 第三种方法线性代数课程里面已经非常常见。下面用 Householder 变换的方法推导中间的过程。假 阅读全文
posted @ 2013-07-23 15:10 daniel-D 阅读(14186) 评论(0) 推荐(2) 编辑

2013年7月22日

摘要: 1. 矩阵与映射矩阵和映射包含两方面的关系:简单:已知矩阵 M, 从向量 x 映射到 M * x. (注:矩阵与行向量的点乘)稍微复杂:已知映射 x ->M * x, 求矩阵 M。第一种情况直接运算就可以得到映射,就不详细写了,着重写第二种情况。首先,假设 x 为 n 维行向量, M*x 为 m 维列向量,可以知道 M 是 m × n 大小的矩阵。在点乘里面,M 的列向量是基向量, x 向量的每个分量是线性组合的系数,M 矩阵可以写成:怎么求出 v1, v2, ..., vn 向量呢?利用基向量带入即可得到:例一:将一张图片向右拉伸两倍,即 (x, y) 变为了 (2x, y) 阅读全文
posted @ 2013-07-22 23:40 daniel-D 阅读(1963) 评论(0) 推荐(0) 编辑
摘要: 说明:Matrix Methods in Data Mining and Pattern Recognition 读书笔记1. 正交的一些概念和性质在前一章的最小二乘的问题中,我们知道不恰当的基向量会出现条件数过大,系统防干扰能力差的现象,这实际上和基向量的正交性有关。两个向量的内积如果是零, 那么就说这两个向量是正交的,在三维空间中,正交的两个向量相互垂直。如果相互正交的向量长度均为 1, 那么他们又叫做标准正交基。正交矩阵则是指列向量相互正交的方阵。标准正交矩阵有具有如下性质:若 P 和 Q 是标准正交矩阵,那么 X = PQ 也是标准正交矩阵。正交矩阵最重要的性质之一是它的变换可以保证一 阅读全文
posted @ 2013-07-22 15:10 daniel-D 阅读(4851) 评论(0) 推荐(0) 编辑

2013年7月21日

摘要: 说明:Matrix Methods in Data Mining and Pattern Recognition 读书笔记非常 nice 矩阵在线计算器,网址:http://www.bluebit.gr/matrix-calculator/.1. LU Decomposition假设现在要解一个线性系统:Ax = b,其中 A 是 n×n 非奇异方阵,对于任意的向量 b 来说,都存在一个唯一的解。回顾我们手工求解这个线性方程组的做法,首先将矩阵 A 行之间进行加减,将 A 矩阵转化为一个上三角矩阵,然后从下往上将未知数一个一个求解出来,这就是高斯消元法。实际上,矩阵等价于左乘一个单位 阅读全文
posted @ 2013-07-21 23:30 daniel-D 阅读(5400) 评论(1) 推荐(1) 编辑
摘要: 1. 知识点准备在了解 CNN 网络神经之前有两个概念要理解,第一是二维图像上卷积的概念,第二是 pooling 的概念。a. 卷积关于卷积的概念和细节可以参考这里,卷积运算有两个非常重要特性,以下面这个一维的卷积为例子:第一个特性是稀疏连接。可以看到, layer m 上的每一个节点都只与 layer m-1 对应区域的三个节点相连接。这个局部范围也叫感受野。第二个特性是相同颜色的线条代表了相同的权重,即权重共享。这样做有什么好处呢?一方面权重共享可以极大减小参数的数目,学习起来更加有效,另一方面,相同的权重可以让过滤器不受图像位置的影响来检测图像的特性,从而使 CNN 具有更强的泛化能力。 阅读全文
posted @ 2013-07-21 10:24 daniel-D 阅读(5587) 评论(0) 推荐(1) 编辑

2013年7月16日

摘要: 1. 线性组合概念很简单:当然,这里向量前面的系数都是标量。2. Span向量v1,v2,.... ,vn的所有线性组合构成的集合,称为v1,v2,... ,vn的张成(span)。向量v1,v2,...vn的张成记为Span{v1,v2,... ,vn}。回顾上一次课里面的电脑登陆认证的过程,假设黑客知道使用 GF(2) 加密,截获到一组电脑的问题 alpha 以及用户的回答 beta:那么即使黑客不知道密码, alpha 所组成的 span 里面的所有问题都可以通过线性组合来得到答案了,证明如下:3. Generator实际上就是基的概念:4. 向量在实数上的 spanspan 就是向量的 阅读全文
posted @ 2013-07-16 19:19 daniel-D 阅读(892) 评论(0) 推荐(0) 编辑

2013年7月15日

摘要: 1. Collaborative FilteringCollaborative Filtering: 通过喜好相近的人构造推荐列表。如何表示喜好?用嵌套字典表示不同人对不同影片的评分。嵌套字典的数据结构就像一棵树,叶子节点(键值)表示最终的属性。(源代码下载地址)>>>from recommendations import critics>>> critics['Toby']{'Snakes on a Plane': 4.5, 'Superman Returns': 4.0, 'You, Me and 阅读全文
posted @ 2013-07-15 21:53 daniel-D 阅读(1689) 评论(0) 推荐(0) 编辑

2013年7月8日

摘要: 1. list 画点>>> from plotting import plot>>> L = [[2, 2], [3, 2], [1.75, 1], [2, 1], [2.25, 1], [2.5, 1], [2.75, 1], [3, 1], [3.25, 1]]>>> plot(L)2. 缩放 alpha × vec = [alpha × elem for elem in vec] >>> def scalar_vector_mult(alpha, v): return [alpha*x for x 阅读全文
posted @ 2013-07-08 22:41 daniel-D 阅读(718) 评论(0) 推荐(0) 编辑

2013年7月7日

摘要: 1. 非常好的 Python 教程《深入 Python 3.0》 以及 IBM 开发社区的博客探索 Python .2. 子集: s 是 S 的子集>>>S = {2, 3, 4, 5, 6, 7}>>>s = {x for x in S if x%2==0} # 偶数子集>>>sset([2, 4, 6])3. 映射:Ceasar 加密>>> import string>>> table = string.maketrans("abcdefghijklmnopqrstuvwxyz", 阅读全文
posted @ 2013-07-07 11:17 daniel-D 阅读(1216) 评论(0) 推荐(0) 编辑

2013年7月6日

摘要: 1. 作用快速创建匿名单行最小函数,对数据进行简单处理, 常常与 map(), reduce(), filter() 联合使用。2. 与一般函数的不同>>> def f (x): return x**2...>>> print f(8)64>>>>>> g = lambda x: x**2 # 匿名函数默认冒号前面为参数(多个参数用逗号分开), return 冒号后面的表达式>>>>>> print g(8)643. 与一般函数嵌套使用与一般函数嵌套,可以产生多个功能类似的的函数。> 阅读全文
posted @ 2013-07-06 18:51 daniel-D 阅读(1173) 评论(0) 推荐(0) 编辑

2013年6月9日

摘要: 0. 前言前面我们利用 LR 模型实现了手写数字识别,但是效果并不好(不到 93% 的正确率)。 LR 模型从本质上来说还只是一个线性的分类器,只不过在线性变化之后加入了非线性单调递增 sigmoid 函数进行一一映射。实际上,这里的非线性变换对于我们分类来说是几乎没有什么作用的(在分类上,它等价于线性变换之后挑选出输出值最大的节点作为我们的预测结果),于是我们考虑用更复杂一点的带有一个隐层的 MLP (Multi-Layer Perceptron) 模型。1. 模型MLP 模型可以看作是在输入空间经过非线性变换(第一层与第二层)之后的 LR(第二层与第三层), MLP 的优势在于,一个经过训 阅读全文
posted @ 2013-06-09 00:01 daniel-D 阅读(2604) 评论(0) 推荐(0) 编辑

2013年6月6日

摘要: 0. 前言上一篇文章我们从十分直观的角度理顺了 BP 算法的流程,总结起来,一次 BP 权值调整的过程是这样的:输入向量从输入节点依次向后传播,我们可以计算出 the activation of all the hidden and output units计算每个输出节点的残差输出节点的残差依次向前传播,由此可以求得各个隐层的残差由隐层的残差可以求得隐层左侧权重的更新虽然我们理顺了过程,但是残留下来的问题太多了。比如,这里的 “残差” 究竟是什么,为什么由 “残差” 乘以前一节点的 activation 的值累加起来就可以求得权重的更新。这其中说白的就是 partial derivative 阅读全文
posted @ 2013-06-06 18:12 daniel-D 阅读(4699) 评论(0) 推荐(1) 编辑

2013年6月3日

摘要: 0. 前言之前上模式识别课程的时候,老师也讲过 MLP 的 BP 算法, 但是 ppt 过得太快,只有一个大概印象。后来课下自己也尝试看了一下 stanford deep learning 的 wiki, 还是感觉似懂非懂,不能形成一个直观的思路。趁着这个机会,我再次 revisit 一下。本文旨在说明对 BP 算法的直观印象,以便迅速写出代码,具体偏理论的链式法则可以参考我的下一篇博客(都是图片,没有公式)。1. LMS 算法故事可以从线性 model 说起(顺带复习一下)~在线性 model 里面,常见的有感知机学习算法、 LMS 算法等。感知机算法的损失函数是误分类点到 Target 平 阅读全文
posted @ 2013-06-03 23:35 daniel-D 阅读(28256) 评论(4) 推荐(4) 编辑

2013年6月2日

摘要: 0. 前言 本文是应用 logsitic regression 模型对手写数字识别的实现,整个程序是基于 MNIST 手写数字数据库进行 train, cross validate 和 test 的,如需下载 python 实现的源代码,请点击这里,你还可以在这里下载数据集。 MNIST 数据库由NYU 的 Yann LeCun 等人维护, Yann LeCun 自 1998 年以来就一直从事这方面的研究,实现的方法包括 linear classifier, K-NN, SVM, CNN 等,他提出的卷积神经网络是第一个真正多层结构学习算法,利用空间相对关系减少参数数目以提高训练性能,咱手写. 阅读全文
posted @ 2013-06-02 01:31 daniel-D 阅读(5051) 评论(0) 推荐(0) 编辑

2013年5月30日

摘要: 0. 前言 这学期 Pattern Recognition 课程的 project 之一是手写数字识别,之二是做一个网站验证码的识别(鸭梨不小哇)。面包要一口一口吃,先尝试把模式识别的经典问题——手写数字识别做出来吧。这系列博客参考 deep learning tutorial ,记录下用以下三种方法的实现过程:Logistic Regression - using Theano for something simpleMultilayer perceptron - introduction to layerDeep Convolutional Network - a simplified . 阅读全文
posted @ 2013-05-30 21:54 daniel-D 阅读(24208) 评论(0) 推荐(2) 编辑

导航