自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 论文阅读:《神经机器翻译和序列对序列模型:一个教程》中

4 对数线性语言模型 本节讨论另一种语言模型:对数线性语言模型。它的计算方法跟上面提到的基于计数的语言模型很不同。 4.1 模型公式化 对数线性语言模型也是计算给定前几个词的条件下下一个词的条件概率,但是方法不一样,基本分为以下几步: 计算特征:对数线性语言模型围绕特征这个概念。特征是“上下文中某个对预测下一个词有用的东西”。更精确地,我们定义一个特征函

2017-06-27 15:43:46 672

原创 论文阅读:《神经机器翻译和序列对序列模型:一个教程》上

这是CMU的助理教授Graham Neubig的一篇tutorial的翻译,原文来自Neural Machine Translation and Sequence-to-sequence Models: A Tutorial。本文只取其中重要部分,略掉习题和高级领域。 2 统计机器翻译 任何翻译系统都可以定义成一个函数,输入是原句,输出是一个翻译假设。统计机器翻译系统是用给定原句下译句

2017-06-26 16:46:29 1050

原创 论文阅读:《Neural Machine Translation by Jointly Learning to Align and Translate》

这是2015年的一篇会议论文,作者是Dmitry Bandana,KyungHyun Cho,Yoshua Bengio。本文最重要的贡献就是提出了attention机制。下面我先总结每段的要点,然后适当添加自己的解读。 ABSTRACT 神经机器翻译(NMT)里,别人大多用encoder-decoder,我们推测把原句编码到一个固定长度的向量是一个瓶颈,然后我们提出了改进。 1

2017-06-24 08:43:46 6588

原创 Gale和Church的句对齐算法解析

Gale和Church在1993年提出了一个基于长度进行句对齐的算法,并在附录里公开了C源代码。这篇论文相当经典,以至于之后的关于句对齐的论文大多数要引用它。论文的题目是《 A Program for Aligning Sentences in Bilingual Corpora》。论文并不好懂,主要是因为其中的术语和目标没有给出清晰的定义。这篇博客就是要解读一下这篇论文,顺便解读一个Python实

2017-04-14 22:05:11 2787 3

原创 循环神经网络RNN及其变种LSTM

首先说一句,对于理解RNN这个概念,上策是先从数学角度理解,然后再画图理解。在这个前提下,一切上来就放图的书、论文、教程都是耍流氓。 循环神经网络是一种神经网络,那数学上神经网络是什么?是函数。普通神经网络可以抽象成输入层,隐层,输出层。隐层不管内部有几层,总体都可以抽象成“一个”隐层。隐层是一个函数,以输入层的数据作为输入,通过计算得到输出。输出层是一个函数,以隐层的输出作为输入,通过计算得到最

2017-03-27 22:07:55 2052

原创 N元语言模型

语言模型是干嘛的?语言模型可以计算任何句子的概率。例如,“I love you”的概率是多少?用数学语言表述,NN元语言模型(NN-gram model)根据一个词语的前N−1N-1个词语,来计算这个词语的概率。如果我们有了一个2元模型,“I love you”的概率就等于P(I)×P(love|I)×P(you|love)P(I)\times P(love|I)\times P(you|love)

2017-03-11 23:54:15 5152

原创 Python学习笔记:作用域和命名空间

本篇参考官方文档9: The Python Tutorial 9.2: Python Scopes and Namespaces这节非常重要,许多错误都是对作用域和命名空间不熟悉导致的。先看看文档里对命名空间(namespace)的定义: 命名空间是从名字到对象的映射。大多数命名空间目前是由Python字典实现的。例子有:内建(built-in)名字(比如abs()函数);一个模块里的全局名字,

2017-01-21 12:59:04 2079

原创 Python实现k-means算法

这也是周志华《机器学习》的习题9.4。 数据集是西瓜数据集4.0,如下编号,密度,含糖率1,0.697,0.462,0.774,0.3763,0.634,0.2644,0.608,0.3185,0.556,0.2156,0.403,0.2377,0.481,0.1498,0.437,0.2119,0.666,0.09110,0.243,0.26711,0.245,0.057

2017-01-18 16:41:05 4015

原创 周志华《机器学习》习题6.2

6.2 试用LIBSVM,在西瓜数据集3.0α\alpha上分别用线性核和高斯核训练一个SVM,并比较其支持向量的差别。我用的是sklearn.svm中的SVC类,这个类是基于LIBSVM实现的。很傻瓜式的几行代码就搞定了,答案是它俩得到一样的支持向量。# -*- coding: utf-8 -*- """Excercise 6.2"""import numpy as npimport pan

2017-01-17 19:06:04 5092

原创 周志华《机器学习》习题4.3

为表4.3中数据生成一棵决策树。代码是在《机器学习实战》的代码基础上改良的,借用了numpy, pandas之后明显简化了代码。表4.3的数据特征是离散属性和连续属性都有,问题就复杂在这里。话不多说,看代码。 先定义几个辅助函数,正常的思路是先想宏观算法,然后需要什么函数就定义什么函数。import mathimport pandas as pdimport numpy as npfrom t

2016-12-20 14:39:49 3222 3

原创 周志华《机器学习》习题3.3

编程实现对数回归,并给出西瓜数据集3.0α\alpha上的结果。 既然是编程实现,就不要调用现成的库了好吧?比如sklearn就有对数回归的实现。看一下我们的数据,前两列是特征(attribute),最后一列是标记(label)。密度,含糖率,好瓜0.697,0.46,是0.774,0.376,是0.634,0.264,是0.608,0.318,是0.556,0.215,是0.403,

2016-12-18 16:42:48 2016

原创 Python学习笔记:循环技巧

本文从官方文档中翻译了几个循环技巧。

2016-12-13 22:34:14 482

原创 Python学习笔记:列表推导式List Comprehension

本篇参考官方文档: The PythonTutorial:5.Data Structures列表推导式其实很简单,看一遍官方文档就可以了。 列表推导式提供了一个构造列表的简介的方法。通常的用途有制作一个新的列表,这个列表的每一个元素都是把一个操作作用于另一个序列或迭代器得到的;或者制作一个满足某些条件的子序列。 例如,加入我们想制作一个平凡列表,像: >>> squares =

2016-12-06 21:09:59 416

原创 Python学习笔记:函数式编程工具

本篇参考官方文档: The PythonTutorial:5.Data Structures 函数式编程可以大大简化代码,本篇学习一下三个对list操作非常有用的函数: filter(),map(),reduce()filter filter(function, sequence)返回一个由序列(sequence)中使得function(item)为真的元素(item)组成的组成的序列。如果这

2016-12-06 20:33:15 465

原创 Python学习笔记:函数

本片参考官方文档: The PythonTutorial 函数的作用域(scope) 函数的运行引入了一个新的符号表(symbol table)以用于这个函数的本地变量。更确切地,函数中所有的变量赋值都把值储存在本地符号表里;而变量引用首先查找本地变量表,然后查找上一层函数的本地变量表,然后查找全局变量表,最后查找内建(built-in)变量表。所以,全局变量不能直接在一个函数中被赋值(除非声明

2016-12-06 15:10:19 450

原创 SVM学习笔记

这是一篇简单的学习总结,并无分享意义。参考资料有周志华老师的《机器学习》,七月在线冯老师的课,还有pluskid大牛的博客。间隔可以用法向量ww的一范式表示,间隔最大化等于ww二范式的最小化,这是一个凸二次规划问题。 这个凸二次规划问题的极小值可以通过其对偶问题的最大值解出。用拉格朗日乘子法得到对偶问题,拉格朗日函数对ww求偏导使其为零得到ww,再代入拉格朗日函数得到关于拉格朗日乘子α\alpha

2016-12-03 16:35:53 617

原创 Python连接MySQL数据库,for Mac

如果还没安装MySQL,请转移 Mac安装MySQL 。 1.先安装pip,百度自己解决。 2.在终端里输入pip install mysql-connector-python 3.打开python,输入import mysql.connector,如果没有出错,说明安装成功。下面是最基本的连接数据库代码,简单易懂,相信不用多说了。 把其中的user和password改成自己的,host 1

2016-11-03 22:58:03 1371

原创 Mac安装MySQL

1.百度 “MySQL”,进入MySQL官网2.点击Downloads,在Downloads页面找到最下方的MySQL Community Edition(GPL),点击“Community(GPL) Downloads”3.点击“MySQL Community Server(GPL)”4.在最下方,点击“Mac OS X (x86,64-bit),DMG Archive” 下载结

2016-11-02 21:57:32 937

原创 Python实现栈和队列

我只是书的搬运工。栈和list有很大相似之处,所以实现起来简单一些。class Empty(Exception): """Error attempting to access an element from an empty container.""" passclass ArrayStack: """LIFO Stack implementation using a Pyt

2016-08-05 21:23:13 527

原创 Python学习笔记:list,tuple和str

本篇试图回答下面两个问题: list,tuple和str的底层是怎么实现的? 它们之间有什么异同?首先定义一下数组(array),这个数组跟其他语言说的数组不太一样,这个数组只是内存上的概念。数组是一片连续的内存块,可以在常数时间索引每个内存块。 list,tuple和str都属于sequence,sequence底层都是用数组实现的。下面详细描述各个sequence。str:在Python中

2016-08-05 16:38:08 1383

原创 Python学习笔记:iterator和iterable

定义: 一个迭代器(iterator)是一个管理一系列值的迭代的对象。如果一个变量i指代一个迭代器对象,那么每次调用内建函数next(i)就可以产生一个这一系列值的下一个元素,如果StopIteration异常发生则意味着没有更多的元素可以产生了。 一个iterable是一个对象,obj,可以用语句iter(obj)产生一个迭代器。从定义可以很明显的看出iterator和iterable

2016-08-03 21:47:07 572

原创 Python:列表作为参数

简单的看下三种情况:def changeList(l): l[0] = 5 def changeList1(l): l = []def changeList2(l): l[:] = []a = [1,2,3]changeList(a)print(a)b = [1,2,3]changeList1(b)print(b)c = [1,2,3]changeList2(

2016-08-03 10:24:37 15965 2

原创 Python学习笔记:对象,值和类型

本篇参考Python官方文档,3. Data model — Python 3.5.2 documentation下面是原文翻译过来的: 对象 是Python对数据的抽象。Python程序程序中所有的数据都用对象或者对象之间的关系表示。(在某种意义上,与冯诺依曼的“程序存储计算机”模型相一致,代码也由对象表示) 每个对象都有一个身份(identity),类型和值。一个对象的身份从创建开始就

2016-08-02 20:43:04 1010

原创 找出数组X和Y中所有2n个元素的中位数

算法导论第三版,9.3-8算法:如果两个数组长度为1,选出较小的那个一个否则,取出两个数组的中位数。取有较大中位数的数组的低区和较低中位数数组的高区,组合成新的长度为n的数组。找出新数组的中位数 思路: 既然用递归分治,一定有基本情况,基本情况就是数组长度为1. 观察会发现总的中位数介于两个数组的中位数之间。详细证明如下: 设总的中位数是MM,XX的中位数是MXM_X,YY的中位数是

2016-07-30 11:53:04 3269

原创 最坏情况为线性时间的选择算法之Python实现

算法导论第三版,9.3import randomimport mathdef insertion_sort(a): length = len(a) for j in range(1,length): key = a[j] i = j - 1 while i>=0 and a[i] > key: a[i+1]

2016-07-29 21:02:43 1226 1

原创 寻找第二小元素

把n个元素分成一对对,每一对进行一次比较得出一个较小值,这是第一轮筛选,以此类推,一共进行⌈\lceillgnn⌉\rceil 轮筛选,n-1次比较。第二小的元素一定在某一轮筛选中与最小的进行比较被PK掉了,但是不能确定是哪一轮,所以要所有与最小的进行比较的元素进行再一次挑选最小。与最小的进行比较的元素个数等于筛选轮数,也就是⌈\lceillgnn⌉\rceil ,那么又要进行⌈\lceillgnn

2016-07-28 21:19:55 796 1

原创 指示器随机变量,算法导论5.2

指示器随机变量当A发生时为1,否则为0.指示器随机变量也是变量,也具有随机变量的性质,所以我们可以计算一个指示器随机变量的期望值。设一个指示器随机变量为X,则X = 0,1。有 E(X) = 1xP(X=1) + 0xP(X != 1) = P(X = 1) 。而P(X=1)是什么呢?它是X所对应的事件A的概率,即P(A)。因为我们“恰巧”把当A发生时它的指示器随机变量定义成1,所以才会有这个结果

2016-06-24 12:12:52 1264

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除