Qi's Blog

不打无准备之仗


  • 首页

  • 分类

  • 关于

  • 归档

  • 标签

idea maven configuration

发表于 2018-04-04   |   分类于 web   |  

idea maven的配置

之前一直用eclipse和Maven来开发项目,结果今天因为要搭建spring boot,所以想着用idea,但是maven这块一直出错。首先不记得自己配没配置过maven,所以先查了半天,结果发现是idea自带的maven,然后改成了自己的,然后maven index那里一直有问题,显示connection error,搜了半天最后才搜到,原来是hosts文件出问题,把文件里面的ip映射删掉就行了。。不过我也学到了一个,要学会看log文件,比如idea的Log文件就在help里面,一直报着connection error的错误。

就是这个问题 http://blog.csdn.net/u011768325/article/details/76013840

lda

发表于 2017-04-12   |   分类于 nlp   |  

LDA

word2vec

发表于 2017-04-11   |   分类于 nlp   |  

word2vec

知识点

one-hot

n-gram

参考博客

原理

中英文维基百科语料上的Word2Vec实验 以及其中推荐的中文博客

word2vec 中的数学原理

应用场景

word2vec有什么应用?

运用

word2vec使用指导

ijcai-口碑

发表于 2017-04-10   |   分类于 machine-learning   |  

IJCAI-口碑

他山之石

IJCAI-17 口碑商家客流量预测 赛后总结

python+神经网络实现时间序列预测

第十七名思路分享

gbdt

发表于 2017-04-07   |   分类于 machine-learning   |  

gbdt

摘记

shrinkage

比较好的参考博客

Gbdt(mart)概念简介

Gbdt 迭代决策树入门教程

机器学习中的数学(3)-模型组合(Model Combining)之Boosting与Gradient Boosting

机器学习中的算法(1)-决策树模型组合之随机森林与GBDT

GBDT(Gradient Boosting Decision Tree) 没有实现只有原理

提升树GBDT详解

机器学习(三)GBDT(Gradient Boosting Decision Tree)迭代决策树

GBDT:梯度提升决策

集成学习:从随机森林到 GBDT

李航统计机器学习

周志华西瓜书

GBDT的运用

机器学习基石

发表于 2017-03-23   |   分类于 machine-learning   |  

机器学习基石

第四讲feasibility of learning

1.Learning is impossible

​ 我们无法证明hypothesis是否和目标f一致,也就不知道hypothesis对未知数据的处理是否是正确的,就好像我们没有从数据集中学到什么有用的东西。我们称这样的一个问题叫no free lunch.

2.Probability to the Rescue

Hoeffding’s inequality
$$
P[|\upsilon-\mu| > \epsilon]\leq2\exp(-2\epsilon^2N)
$$
我们拿抽样得来的ν来估计μ,当样本容量N越大时,ν越接近μ。

3.Connection to Learning

对任意已经确定的假设函数h,都可以通过已知的
$$
E{in} = \frac{1}{N}\sum{i=1}^{n}{[[h(x_i)\neq f(xi)]]}
$$
求出未知的
$$
E
{out}=E_{x~p}[[h(x_i)\neq f(xi)]]
$$
再运用霍夫丁不等式
$$
P[|E
{in}(h)-E{out}(h)| \geq \epsilon] \leq 2exp(-2\epsilon^2N)
$$
总结下,在
$$
E
{in}(h) \approx E{out}(h)
$$
的情况下,加上
$$
E
{in}(h)
$$
很小,可以推出
$$
E_{out}(h)
$$
也很小,即在整个输入空间中
$$
h \approx f
$$

4.Connection to Real Learning

​ 对一个hypothesis来说,坏的data是这样的:hypothesis在它上面的Ein很小,而Eout很大。Hoeffding’s inequality是说我们抽到这样的坏数据的几率很小。现在我们有M个hypothesis,那我们选到坏的data的几率肯定是增大了。

因此如果|H|=M的这种有限情况下,抽样样本N足够大时,可以确保假设空间中每个假设都满足$E{in}(g) \approx E{out}(g)$,如果通过算法找出的g满足$E{in}(g) \approx 0$ ,则通过PAC的规则可以保证$E{out}(g) \approx 0$

第五讲training versus testing

Recap and preview

​ 前面的课程得出了这样一个结论:在训练数据集足够大,H中包含的hypothesis个数有限的前提下,我们可以证明每一个hypothesis的Ein和Eout是相当的。在这样的结论下,我们就可以从H中选择一个Ein(g)≈0的hypothesis作为我们的g,且大概差不多(PAC)可以说Eout(g)≈0,也就说明了学习是可行的。

​ 先回顾前四讲的内容,第一讲,说问题会有一个未知的目标f能够完美的解决问题,我们可以找到一个g满足Eout(g)≈0,然后用这个很接近f的g去处理问题。第二讲,说怎么去找到g呢,我们引入Ein(g)≈0来衡量hypothesis,找到合适的g。第三讲,我们介绍了机器学习的分类,并指出本课程研究的问题都是基于批量的监督式二元分类。第四讲,我们尝试着去证明Ein≈Eout,并证明学习是可行的。

Effective Number of Lines

Effective Number of Hypotheses

Break Point

​ 上面我们介绍了四种不同的成长函数。我们原本打算用$m{h}(N)$来代替M。如果我们的mH(N)像positive rays和positive intervals的那样是一个多项式,那随着N的增长,$E{in}(g)$和$E{out}(g)$相差很大的几率会越来越小,逐渐趋于零,这正是我们想要的;而如果我们的$m{h}(N)$像convex sets的那样是指数类型的,那我们还不能确定这个几率。

​ 现在我们来确定一下二维感知机的mH(N)是那种类型的,但这个问题在这一讲还不能解决,要等到下一节。前面提到,当N=4时,我们的$m_h(N)<2N$.我们把4这样$m_h(N)<2N$的点称为break point。现在我们有这样一个猜想:对于没有break point的, 其成长函数就是2N;而对于有break point的,或许从break point上,成长函数就变成了$m_H(N) = O(N^{k-1})$。如果这个猜想成立,那我么就可以说二维感知机的成长函数的增长速度是$N^3$左右。

二维感知机的break point

第六讲theory of generalization

Restriction of Break Point

第九讲 linear regression

Linear Regression Problem

​ 线性回归与二元分类假设函数的表示只差了一个取正负号的函数sign

Linear Regression Algorithm

Generalization Issue

​ 该部分为重点。

​ 线性回归不像前面的PLA一样通过迭代得到最后的hypothesis,更像是通过分析的方法,直接通过公式得到了参数w。线性回归仍属于机器学习算法,因为它做了下面几个工作:

  • 对Ein进行优化,找到其最小值
  • 使Eout≈Ein
  • 迭代的过程在pseudo-inverse内部完成

Linear Regression for Binary Classification

​ 一般都将通过线性回归求得的解析解$w_{lin}$作为PLA或者pocket的初始值$w_0$,达到快速求解的目的 。

Logistic Regression

Logistic Regression Problem

Logistic Regression Error

​ 交叉熵错误$error(w,x,y)=ln(1+exp(-yw^Tx))$

Gradient of Logistic Regression Error

错误:$E{in}(w)=\frac{1}{N}\sum\limits{n=1}^{N}ln(1+exp(-y{n}w^TX{n}))$

梯度:$\nabla E{in}(w)=\frac{1}{N}\sum\limits{n=1}^{N}\theta(-y_nw^Tx_n)(-y_nx_n)$

Gradient Descent

重点,参见博客园。

rnn

发表于 2017-03-22   |   分类于 deep-learning   |  

RNN

cnn in nlp

发表于 2017-03-21   |   分类于 nlp   |  

CNN in NLP

推荐阅读

卷积神经网络在自然语言处理的应用

cnn

发表于 2017-03-21   |   分类于 deep-learning   |  

CNN

卷积和子采样过程:

卷积过程包括:用一个可训练的滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。子采样过程包括:每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。

卷积层的参数个数只跟卷积核有关,而连接数的计算是feature map里面的每一个神经元(每一个格子)跟卷积核里面的每一个神经元进行连接。

推荐阅读

[翻译] 神经网络的直观解释

黄金三博客

WildML – AI, Deep Learning, NLP
http://colah.github.io/
Andrej Karpathy blog

stanford course

CS231n Convolutional Neural Networks for Visual Recognition

翻译版 CS231n课程笔记翻译:卷积神经网络笔记

命名实体识别

发表于 2017-01-05   |   分类于 nlp   |  

命名实体识别

综述

现有的命名实体识别方法,主要包括隐性马科夫链,最大熵,CRF等。

根据综述:在这4种学习方法中,最大熵模型结构紧凑,具有较好的通用性,主要缺点是训练时间复杂性非常高,有时甚至导致训练代价难以承受,另外由于需要明确的归一化计算,导致开销比较大。而条件随机场为命名实体识别提供了一个特征灵活、全局最优的标注框架,但同时存在收敛速度慢、训练时间长的问题。一般说来,最大熵和支持向量机在正确率上要比隐马尔可夫模型高一些,但是隐马尔可夫模型在训练和识别时的速度要快一些,主要是由于在利用Viterbi算法求解命名实体类别序列的效率较高。隐马尔可夫模型更适用于一些对实时性有要求以及像信息检索这样需要处理大量文本的应用,如短文本命名实体识别。

实战

NER工具主要有斯坦福的,哈工大LTP的,等等。

stanford

旧的方式

stanford ner工具在之前是单独的一个工具,要使用它的话,还需要一同下载stanford的分词工具,以及针对中文处理的特别的jar包。有些比较旧的博客写的就是这种方式。

新的方式

不过后来斯坦福把所有NLP工具做了个整合,形成一个pipeline的工具,统一集成到了stanford corenlp这一个大的jar里面,其中这个包包含分词,词性标注,NER,lemma,等等。https://stanfordnlp.github.io/CoreNLP/。要使用哪些功能,可以在property文件里面配置。这种新的方式在进行中文的NER时,还需要下载一个针对中文的包。note:下载起来特别慢,也可以用maven,不过用maven之后还是慢。可能源不太好。

使用方法非常简单,直接调用其API进行解析即可。例子参见使用Standford coreNLP进行中文命名实体识别

源码的分析参见这篇Head First Stanford NLP (1)

LTP

LTP是哈工大开发的,在其云平台的官网上只有restful api的调用方式,但实际上有类似jar包的api调用。java版的好像不是很好处理,所以可以选用其他语言的版本,比如python版本pyltp 0.2.0文档。使用起来也是非常简单,除了pip install pyltp之外,还需要下载模型文件,目前出到了3.4.0(目前是2018-04-29),这个下载还挺快的。

总之,就是各个工具都已经实现好了ner工具,只需要拿来用就行,但希望能多关注其内部实现。

123…7
Qi Liu

Qi Liu

Less is More

69 日志
11 分类
63 标签
© 2018 Qi Liu
由 Hexo 强力驱动
主题 - NexT.Pisces