矩阵向量标量求导

本文由 简悦 SimpRead 转码, 原文地址 www.dohkoai.com 矩阵、向量本质是多元函数求导,在机器学习、统计学中大量使用向量对向量求导、向量对标量求导、矩阵对矩阵求导等,熟练掌握矩阵、向量求导是学习人工智能算法必备技能。  矩阵、向量都可以表示成张量的形式,向量是矩阵的特殊形式,按实际应用可分为标量对向量求导,标量对矩阵求导、向量对向量求导、矩阵对标量求导、矩阵对向量求导、矩阵对矩阵求导等,在深度学习的反向传播 (BP) 中所涉及求导不外乎以上几种形式,本篇结合实例分别介绍以上各种求导过程。 一、含标量的求导方式  标量指的是一个实数,可看成一维向量,含标量的求导方式情形分类两类,一类是矩阵、向量对标量求导,另一类是标量对向量、矩阵求导。 1.1、矩阵、向量对标量求导  这种情形下矩阵为函数矩阵,向量为函数向量,与数值型矩阵、向量不同,函数矩阵、函数向量中元素都是函数,例如有 n 行 m 列函数矩阵 A,其中元素为一元变量 x 的函数,矩阵对标量 x 求导形式为: 显然形状与矩阵 A 一样,也是一个 n 行 m 列矩阵,再如 y 是一个 n 维列向量 y=(y1,y2,y3,…yn)T,y 对标量 x 求导形式为: 以上两个例子可以看出,矩阵、向量对标量求导的结果是与原矩阵、向量形状一样的矩阵或向量,矩阵对标量求导的典型应用是求解线性微分方程。 1.2、标量对矩阵、向量求导:方阵迹的使用  由于向量是特殊的矩阵,这种类型也可以统称为标量对矩阵求导,标量对矩阵求导在人工智能算法中很常见,在深度学习框架中,如 pytorch、tensorflow 要求损失函数的结果必须是一个实数,即标量,在反向传播时,第一层误差就是标量对向量或矩阵求导,然后再通过链式求导法则将第一层误差传播到其他层级神级元。如有多元函数 y=f(x11,x12,…xnm),自变量 xij 是 n 行 m 列的函数矩阵 x,则标量 y 对矩阵 x 求导为: 自变量 x 为向量时,求导过程与标量对矩阵一样,如有多元函数 y=f(x1,x2,…xn),自变量 x 为 n 维列向量即 x=(x1,x2,…xn)T, 标量 y 对 x 的求导结果为:...

April 26, 2022 · Me

推荐系统简介

随着大数据这个概念的风靡,现在似乎什么技术都能和大数据扯上关系。大数据里其实有很多分支,现在热门的是Computer Vision (计算机视觉),简称CV。为什么CV这么热门呢?因为它提供了自动化手段辨认并追踪任何一个人。这是一个高效、强大的工具,也是一柄双刃剑。它可以用在各个方面:军事、政治、治安、经济……除了CV外,大数据的另一个应用,就是推荐系统了。推荐系统研究的是人的行为,然后对每个人的行为做出大概的预测。推荐系统常见的应用是电子商务或社交网络,比如淘宝或京东里,常常有一个“猜你喜欢”的栏目,那就是推荐系统根据每个用户的历史交互自动生成的推荐。又比如微博里,推荐你关注某知名大V的功能,那也是推荐系统。以前,推荐系统的准确度不高,常常推荐一些莫名其妙的东西,搞得人人都对它没什么好感。后来,算法变得更先进了,推荐得更精准了,它又让人欲罢不能。如果不信,那么就请你删掉手机里的抖音。抖音就是一个充分利用推荐系统的成功app。它的一条又一条视频,让人一看就是几个小时。其实,抖音的背后就是一个庞大的推荐系统,它根据你看过的视频,不断地推送你可能喜欢的新视频,把你牢牢圈在自己的小地盘里。 那么,推荐系统到底是怎么工作地呢? 很多人都说,推荐系统其实就是搜集了所有人的隐私,放到一起,然后就知道了你的方方面面。这个想法其实是被误导了。现在很多企业,为了自己的利益,肆无忌惮地搜集个人隐私,所以现在人人都以为大数据的这些技术都是依赖个人隐私的。诚然,有些东西,没有了个人的隐私数据就毫无意义(比如CV的人脸识别)。但推荐系统,虽然它越来越高效,但其实它越来越不依赖个人的隐私了。 “真的吗?这和常识不一样啊!” 回答这个问题前,我们需要对“侵犯个人隐私”这个概念确定一个范围,即哪些东西算个人隐私,哪些是不算个人隐私的。我觉得,对一个互联网平台来说,每个人在上面的活动都不算侵犯个人隐私。比如在淘宝上,你下单买了一个手机。那么,买手机这个活动,对淘宝来说就不能算个人隐私。因为在你买手机时,淘宝当然要知道是你买了一个手机。如果连这个活动都算个人隐私而不能搜集的话,那淘宝就没有办法保证这个手机能安全送到你的手中了。然而,如果淘宝不光记录了你买手机这个活动,还把你的通讯录都搜集起来,那就要算侵犯个人隐私了。因为这些数据是和在淘宝上购物不相关的。 明确了这一点后,我们就可以肯定地说,现代的推荐系统是不依赖个人隐私的了。 想象一下,如果你走进一家店,店员要向你推荐一些他们的商品的话,肯定要问你“喜欢什么款式?”之类的问题。推荐系统也是一样,它虽然不问,但会默默地搜集关于你的信息,比如根据你的身高体重及喜欢的款式向你推荐一件T恤。这个做法很直接,但也侵犯了隐私。如果不搜集这些资料,系统就推荐不了商品。如果你不让搜集,或随便输入一些错误信息,那么生成的推荐八成是你不喜欢的东西。所以,它的准确度也严重依赖用户提供的信息,对卖家来说,也是严重不靠谱。毕竟,没有谁会在网上对着某个网友自报家门。因此,这个方法随着时间的推移和技术的发展被淘汰了。但它仍然留下了它的名字,它的名字是"Content-based filtering"(内容过滤)。 接替内容过滤的技术,叫做"Collaborative filtering"(协同过滤)。协同过滤就不一样了。它不匹配用户的偏好和商品的特性,而是直接匹配每个用户。比如下面的这个表格中展示的,我们已知三个人(甲、乙、丙)对四个商品(A, B, C, D)的购买记录。比如甲,他买了B和C,乙买了A和D。现在要对丙推荐商品,那么除了丙已经买过的B以外,他最有可能买哪一个呢?你们可能有不同的答案,但我会给丙推荐C,因为BC这个组合是甲买过的,所以丙也很有可能在买了B后再买C。 — 这就是协同过滤的原理了。淘宝不需要知道甲乙丙三个人的任何信息,只需要依靠三人买东西的记录就能知道他们最想要什么,而且这样的准确率还很高。得益于不依赖用户个人信息的特性,协同过滤逐渐成为了主流。所以我说,现在的推荐系统,是越来越不依赖个人隐私了。 以上是对推荐系统的大概介绍了。推荐系统的内容繁杂,发展的也很快,关于推荐系统的技术多见于会议论文里,于是普通读者很难了解到它了。所以我想总结一段时间内关于推荐系统的心得,并付诸博客。一来给有兴趣了解或研究推荐系统的朋友入门的一瞥,二来是看到近年来的发展,实在是很多体会和想说的话,存迹于此,算是不负几年的心血吧。

March 22, 2021 · zhb

Metric Learning 简介

Metric Learning 是机器学习中最近比较火的领域,但维基百科上直到本文写作时也没有一个中文翻译。本人才疏学浅,不敢擅自取名,所以文中将会一直使用英文名。关于 Metric Learning 的研究主要有两个方面: 对 Metric Learning 的理论研究。 把 Metric Learning 应用到其他领域(如推荐系统,计算机视觉等)。 近年来,每年的或大或小的会议都有不少关于 Metric Learning 的文章,它们都从各自的特定方面改进或应用了 Metric Learning。本文尝试着抛砖引玉,概括 Metric Learning 的基本原理和它在推荐系统里的应用。本文的定位是科普文,不是综述。写作目的是与机器学习的同侪学习交流。 ## Metric Learning 的基本原理 Metric Learning 的原理为,基于一些分类数据,学习出一个量度,减小同类数据的距离,拉大不同类数据的距离。 因此,它是基于距离的,对两个点,A(x_a, y_a) 和 B(x_b, y_b),根据高中所学,它们的距离如下: distance = \sqrt{(x_a - x_b)^2 + (y_a - y_b)^2} 这个距离又称为欧氏距离(Eculidean distance),即两个点之间的直线距离。通常来说,这个距离越大,两个点越近;越小,两个点越远。其实,这只是一个衡量两点距离的方法。另一个常用的方法是余弦相似性(cosine similarity)。余弦相似性把A 和B视为两个向量,然后计算向量A 和B的夹角,其公式如下: cosine \: distance = \frac{A \cdot B}{||A|| \: ||B||} 余弦相似性的公式看似复杂,其原理是计算两个向量的夹角的余弦值。这个值介于0到1之间,即cosine \: distance \in [0, 1]越大,说明夹角越大,两个向量的离得越远;反之越近。余弦相似性也只是多种量度中的一种,还有很多其他的量度,本文就不赘述了,感兴趣的朋友可以自行搜索。 既然存在这么多量度,那么对于一个任务,我们应该如何选择使用哪一个呢——这个问题就是 Metric Learning 想要解决的。...

July 31, 2020 · zhb

华尔街日报RSS分享

几年前,Google Reader被Google关闭,我也就慢慢地停止了使用RSS。后来,随着环境的变化,国内的新闻变得千篇一律,根本不能满足我紧随时事的需求。RSS又慢慢变得重要起来。所以我从那时开始,就用RSS订阅一些外媒了。 当时,在RSSHub刚刚推出那会,我一度以为RSS的中兴来了,于是又拿起了曾经的RSS阅读器,还帮项目贡献了几个爬虫。后来发现RSSHub有一个潜在的缺陷,即每次访问对应的rss,都需要访问一次目标网站,然后比对并更新缓存结果,这样无可避免地会造成服务器压力的增大。为了减少服务器压力,RSSHub对每个源只能保存一个较低的数量,但这只是治标不治本的办法。 因此,我回到了scrapy框架的爬虫。这样的好处是每天只用定时访问目标源数次,然后生成最新的rss文件。每次rss阅读器需要对应文件时,服务器便只需要读取对应文件后返回,大大减轻了负载。 最后,回到标题吧。在华尔街日报收费后,就只能付费阅读了。我订阅了端的高级会员,他们送了我华尔街日报的账号,我得以制作这个源,现在分享给大家。地址是如下: https://rss.mytool.app/wsj.xml 每天更新两次,欢迎大家在合理范围内使用。

May 16, 2020 · zhb

Realm: 一个全新的流量转发工具

Realm自昨天公开发布以来,受到了大家的关注,非常感谢。根据反馈,更新在于以下几点(按优先级排列): 多端口支持 配置文件支持 以上两点是之后更新的方向,感谢大家的建议。目前,以上两项功能已经完成。因为我没有那么多服务器,所以不能测试多端口多ip的转发。诚邀有兴趣的朋友下载测试,下载地址如下(Github): Realm v1.2-beta.1 配置文件需要用-c参数指定,如 -c config.json。配置文件支持端口段,当转发端口的数量大于本地地址时,都会默认使用第一个传入的地址。这样实现了一个地址上的多端口转发多ip或单ip上的多端口。示例如下: <pre class="wp-block-code json">``` { "listening_addresses": ["0.0.0.0"], "listening_ports": ["30000-30001"], "remote_addresses": ["10.211.55.5", "10.211.55.6"], "remote_ports": ["39515", "53924"] } 需要注意的是,配置文件和命令行指定地址冲突,所以不能同时使用`-c`和`-l -r`。 #### 守护进程 这一点可以通过systemd解决,目前已经有热心大佬提供了,稍后我会更新到Github上,具体内容如下:

May 13, 2020 · zhb