Notes on Noise Contrastive Estimation and Negative Sampling

Notes on Noise Contrastive Estimation and Negative Sampling ## 生成负样本  在常见的关系抽取应用中,我们经常需要生成负样本来训练一个好的系统。如果没有负样本,系统会趋向于把所有的变量分类成正类。但是,在关系抽取中,并不容易找到足够的高质量的负样本(ground truth)。这种情况下,我们通常需要使用distant supervision来生成负样本。   负样本的生成多少可看成是一种艺术。以下讨论了几种常用的方法,还有些方法没有列出。   - random sampling   - incompatible relations   - domain-specific knowledge ## 随机抽样 Random samples   另一种产生负面证据的方法是在所有变量中随机抽取一小部分(people mention pairs in our spouse example),并将其标记为负面证据。   这可能会产生一些错误的负面例子,但是如果统计变量更有可能是错误的,那么随机抽样就会起作用。   例如,大多数人在句子中提到成对,但他们不是配偶,我们就可以在提及成对的人群中,随机抽取一小部分的,并把它们标记为错误的配偶关系的例子。   ## 不相容关系   不相容关系总是或常常是与我们想要抽取的关系冲突的。比如我们有2个实体,x & y. 我们想抽取A关系,而B是与A不相容关系,我们有:   >> B(x,y) => not A(x,y)   比如,我们要为"spouse"(配偶)关系生成负样本,我们可以使用非配偶关系来作为与之不相容的关系,比如parents, children, or siblings: 如果 x 是 y 的父母,那么x和y不能是夫妻。 ## 特定领域规则   有时,我们可以利用其他领域特定的知识来生成负样本。这些规则的设计很大程度上依赖于应用场景。例如,对于配偶关系,一个使用时间信息的领域特定规则是“不同时活着的人不可能是配偶”。Specifically, if a person x has birth_date later than y's death_date, then x and y cannot be spouses.

READ MORE

Word2vec 梳理

    这里只梳理 skip-gram 的points   目标: 根据已经出现的一个词,预测它的上下文   1. 统计语言模型  

READ MORE

Strandbeest mechanism and Leg mechanism

  I have to say besides computer science study, I'm also interested in Leg mechanism. Share two keywords:     Leg mechanism and the strandbeest mechanism There is an interesting github project doing the simulaion and you can play with it.     https://github.com/robz/Linkages3   The publisher Grand Illusions has shared a lot of creative toys. I get it from him at first. By the way, put another thing i like very much here: http://www.mechanicards.com  

READ MORE

网络表示学习Network Representation Learning/Embedding

  网络表示学习相关资料 网络表示学习(network representation learning,NRL),也被称为图嵌入方法(graph embedding method,GEM)是这两年兴起的工作,目前很热,许多直接研究网络表示学习的工作和同时优化网络表示+下游任务的工作正在进行中。 清华大学计算机系的一个学习组 新浪微博@涂存超 整理的论文列表:https://github.com/thunlp/NRLpapers,并一直持续更新着,里面详细的列举了最近几年有关网络表示学习(network representation learning/network embedding)比较有代表性的论文列表及其代码。 ☆陈启明整理的github列表  https://github.com/chihming/awesome-network-embedding 一篇综述性文章(University of Southern California (USC))及其code: (1)文章: Goyal P, Ferrara E. Graph Embedding Techniques, Applications, and Performance: A Survey[J]. arXiv preprint arXiv:1705.02801, 2017. (2)代码: https://github.com/palash1992/GEM 一篇博客: http://blog.csdn.net/Dark_Scope/article/details/74279582#0-tsina-1-3919-397232819ff9a47a7b7e80a40613cfe1 一个github资料,里面有部分论文+code(大多数是python实现,matlab次之): 四个slides:  [(MLSS2017)网络表示学习]《Representation Learning with Networks》by Jure Leskovec [Stanford University] Part1:网页链接 Part2:网页链接 Part3:网页链接 Part4:网页链接 ​​​​   https://pan.baidu.com/s/1nuB5Rex   https://pan.baidu.com/s/1geUHeQB   https://pan.baidu.com/s/1cwB7pc   网络表示学习(DeepWalk,LINE,node2vec,SDNE) 原创 2017年07月24日 12:49:01   详细的资料可以参考:网络表示学习相关资料 1.传统:基于图的表示(又称为基于符号的表示) 如左图G =(V,E),用不同的符号命名不同的节点,用二维数组(邻接矩阵)的存储结构表示两节点间是否存在连边,存在为1,否则为0。   缺点:长尾分布下大部分节点间没有关系,所以邻接矩阵非常稀疏,不利于存储计算。     2. 网络表示学习(Network Representation Learning,NRL),也称为图嵌入法(Graph Embedding Method,GEM):用低维、稠密、实值的向量表示网络中的节点(含有语义关系,利于计算存储,不用再手动提特征(自适应性),且可以将异质信息投影到同一个低维空间中方便进行下游计算)。

READ MORE

禁用firefox 56自动更新

firefox 56支持旧式扩展,这很科学~~ 它却自动更新,简单地关了也不行,很是牛氓! ========== -备份C:\Users\用户名\AppData\Roaming\Mozilla\Firefox\Profiles 文件夹。 -卸载FF57,重启,用everything搜索所有ff残留文件,删除,安装56.0.2,断网运行FF,关闭FF 将配置文件覆盖回。 -断网运行FF,设置里关闭自动更新,about:config里false以下3项: app.update.auto app.update.enabled app.update.service.enabled -还有一个重要任务: Edit the file prefs.js, located in %APPDATA%\Mozilla\Firefox\Profiles\xyz.default\ which usually translates to C:\Users\username\AppData\Roaming\Mozilla\Firefox\Profiles\xyz.default\ (Note: username and xyz will vary) Make sure the line user_pref(“app.update.enabled”, false); is present in the file; if it isn’t, add it or modify it. Ignore the warning that this file should not be edited Save and close the file. OK. Optional: Note the button “Check for updates” in the “About Firefox” dialog box. Of course, DO NOT click it until you are prepared and ready to receive the update 由于56 到57 有重要安全更新,所以安全起见,还有一条路,用firefox的一个分支: https://www.

READ MORE

用bayes公式进行机器学习的经典案例

用bayes公式进行机器学习的经典案例 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P(A)冠以“先验概率”,而不知“先验”二字到底从何而来。 再到工作了几年之后重回校园,重新拾起对求知的热情,重新用向小白讲述Bayes公式的态度,讲述自己对它最朴素的理解。尽量让像我一样刚入门的小白同学们,能用生活中最朴素的例子找到bayes公式中,“先验”二字的由来。 要理解bayes公式,需从全概率公式讲起: $$ P(A_i|B)=\frac {P(B|A_i)P(A_i)}{\displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j)} $$ 其中的全概率公式: $$ \displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B) $$ 这里,可理解: $$ A_j \rightarrow Class_j \text{ 这是你样本可能从属的类别/本质/属性} B \rightarrow Events/Data \text{ 这是你看到的样本的表象} $$ 2.我的进一步理解 2.1 设有一幅扑克牌(这是一种等概率的情况) 摸到一张J,想知道它属于♥️这一类的概率。 这里,A是现象,是观察到的属性。♥️,♣️,♦️,♠️是对所有除了大王小王外的扑克牌的四个类别。 任务就是要根据现象J,对这张牌进行归类,求这张牌属于♥️这一类的概率。 $$ P(A|B) \text{就是看到J的情况下,属于} \heartsuit \text{的概率} $$ 这是我们要求的量。 $$ P(A|B)=\frac {P(B|A)P(A)}{P(B)} $$ P(B|A) - 在已知♥️的牌中,有几个j,显然,1/13 P(A) - 在整副牌中,红桃出现的概率:13/54 P(B) - 在整副牌中,J出现的概率:4/54 这里这个P(B)可以是如下公式计算的: $$ \displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B) $$ 即,A_j代表的是♥️,♣️,♦️,♠️中的某一个类别。例如,j=1, 我们认为是♥️,则,P(B|A1) = 1/13 P(A1) = 13/54 此时, $$ P(B|A_1) \times P(A_1) = \frac1{13} \times \frac {13}{54} = \frac{1}{54} $$ 当 j = 1,2,3,4 时,由于这里每个 $$ P(B|A_j) $$ 都是相等的,所以 $$ P(B) = 4 \times \frac{1}{54} = \frac{4}{54} $$ 所以,上面的P(A|B) 就能算出来了。因为P(B|A) ,P(A) ,P(B)都知道了。

READ MORE

bayes公式 - 再从零开始理解

bayes公式与机器学习 - 再从零开始理解 从本科时候(大约9年前)刚接触Bayes公式,只知道P(A|B)×P(B) = P(AB) = P(B|A)×P(A) 到硕士期间,机器学习课上对P(B|A)P(A)冠以“先验概率”,而不知“先验”二字到底从何而来。 再到工作了几年之后重回校园,重新拾起对求知的热情,重新用向小白讲述Bayes公式的态度,让自己对它有最朴素的理解。尽量让像我一样刚入门的小白同学们,能用生活中最朴素的例子找到bayes公式中,“先验”二字的由来。 要理解bayes公式,需从全概率公式讲起: $$ P(A_i|B)=\frac {P(B|A_i)P(A_i)}{\displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j)} $$ 其中的全概率公式: $$ \displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B) $$ 这里,可理解: $A_j \rightarrow Class_j$ (这是你样本可能从属的类别) $B \rightarrow Events \space or \space Data $ (这是你看到的样本的表象) 2.进一步理解 2.1 设有一幅扑克牌(这是一种等概率的情况) 摸到一张J,想知道它属于♥️这一类的概率。 这里,A是现象,是观察到的属性。♥️,♣️,♦️,♠️是对所有除了大王小王外的扑克牌的四个类别。 任务就是要根据现象J,对这张牌进行归类,求这张牌属于♥️这一类的概率。 $$ P(A|B) \text{就是看到J的情况下,属于} \heartsuit \text{的概率} $$ 这是我们要求的量。 $$ P(A|B)=\frac {P(B|A)P(A)}{P(B)} $$ $P(B|A)$ - 在已知♥️的牌中,有几个J,显然,1/13 $P(A)$ - 在整副牌中,红桃出现的概率:13/54 $P(B)$ - 在整副牌中,J出现的概率:4/54 这里这个P(B)可以是如下公式计算的: $$ \displaystyle\sum_{j=1}^nP(B|A_j)\times P(A_j) = P(B) $$ 即,$A_j$代表的是♥️,♣️,♦️,♠️中的某一个类别。例如,j=1, 我们认为是♥️,则,P(B|A1) = 1/13 P(A1) = 13/54 此时, $$ P(B|A_1) \times P(A_1) = \frac1{13} \times \frac {13}{54} = \frac{1}{54} $$ 当 j = 1,2,3,4 时,由于这里每个 $ P(B|A_j) $ 都是相等的,所以 $$ P(B) = 4 \times \frac{1}{54} = \frac{4}{54} $$ 所以,上面的P(A|B) 就能算出来了。因为P(B|A) ,P(A) ,P(B)都知道了。

READ MORE

Running a jupyter notebook server

你也许需要服务器运行jupyter notebook 阿里云: https://yq.aliyun.com/articles/98527 关于更安全的证书访问: http://jupyter-notebook.readthedocs.io/en/stable/public_server.html

READ MORE

关于文献检索与下载

来源: 谷歌学术 谷歌学术(镜像) cnki.net (一般从学校内网都能登录进去查文献,下文献) 学霸图书馆(终极疗法) 百度学术(你还在用“百度学术”? Are you kidding me?) 谷歌学术(镜像): http://ac.scmor.com/ 学霸图书馆 http://xuebalib.com 进去买个钻石会员,以前不通畅的那些国外SCI , WebOfKnowledge 等等,都顺畅了! (我恨自己知道得太晚!!!) 基本的检索期刊的影响因子的方法,SCI 分区的方法,自己google。 看到下图的时候,我已然内牛满面。。。

READ MORE

寻找cost函数最小值:梯度下降与最小二乘法

Editted by MarkDown 寻找cost函数最小值:梯度下降与最小二乘法 参考:最小二乘法小结–刘建平 背景: 目标函数 = Σ(观测值-理论值)2 观测值就是我们的多组样本,理论值就是我们的假设拟合函数。目标函数也就是在机器学习中常说的损失函数,我们的目标是得到使目标函数最小化时候的拟合函数的模型。 最小二乘法的局限性和适用场景 从上面可以看出,最小二乘法适用简洁高效,比梯度下降这样的迭代法似乎方便很多。但是这里我们就聊聊最小二乘法的局限性。 首先,最小二乘法需要计算$\mathbf{X}^\mathbf{T}\mathbf{X}$的逆矩阵,有可能它的逆矩阵不存在,这样就没有办法直接用最小二乘法了,此时梯度下降法仍然可以使用。当然,我们可以通过对样本数据进行整理,去掉冗余特征。让$\mathbf{X}^\mathbf{T}\mathbf{X}$的行列式不为0,然后继续使用最小二乘法。 第二,当样本特征n非常的大的时候,计算$\mathbf{X}^\mathbf{T}\mathbf{X}$的逆矩阵是一个非常耗时的工作(nxn的矩阵求逆),甚至不可行。此时以梯度下降为代表的迭代法仍然可以使用。那这个n到底多大就不适合最小二乘法呢?如果你没有很多的分布式大数据计算资源,建议超过10000个特征就用迭代法吧。或者通过主成分分析降低特征的维度后再用最小二乘法。 第三,如果拟合函数不是线性的,这时无法使用最小二乘法,需要通过一些技巧转化为线性才能使用,此时梯度下降仍然可以用。 第四,讲一些特殊情况。当样本量m很少,小于特征数n的时候,这时拟合方程是欠定的,常用的优化方法都无法去拟合数据。当样本量m等于特征说n的时候,用方程组求解就可以了。当m大于n时,拟合方程是超定的,也就是我们常用与最小二乘法的场景了。

READ MORE