areal 的个人资料iamcrf日志列表 工具 帮助

日志


6月25日

快速排序vs.冒泡排序

最近两个星期的时间,我被chinese gigaword corpus的处理难住了:我原来的程序居然不能正确处理超过一亿汉字的文本,每次都在几分钟甚至几个小时后崩溃。硬邦邦的linux只会报告segment fault。不知道问题出在哪里。
昨天的时候灵机一动,会不会是数据太大,导致表示指标的数据类型越界了?看了下,果然是用的是int型,改成unsigned long型,居然跑通了几个。继续检查剩下的几个segment fault,发现问题出在快速排序那一段,因为用了递归函数,不知道哪里有问题,今天临时改为冒泡排序,再也没有segment fault了。但是出了新问题:到现在为止,一个原来15分钟quick sort掉的样本集(包含1.2亿汉字),几个小时都没有冒泡完。
2月1日

Stallman征婚了-zt

Craigslist是全球最大和最早的分类广告网站,近日有人发现开源软件运动的领军人物Richard Stallman在其上发布了一则征婚启事

“本人是单身白人无神论者,54岁,众所周知地聪明,非同寻常地热衷于政治、科学、音乐和跳舞。

希望寻找一位兴趣广泛、对世界充满好奇、性格直爽爱憎分明(我讨厌猜来猜去)的温柔女性,能把乐趣、真理、美和正义看得比“成就”更重要......我花费很多时间在欧洲、亚洲和拉美演讲,如果能有时间与我一同旅行就最好不过了。”

同时RMS还附上了自己的照片。

本贴来源
http://news.mydrivers.com/1/99/99243.htm

评论:Stallman还是蛮谦虚的。

11月6日

crf++为什么浪费内存:都是stl惹的祸

利用休假读了下crf++代码,特别是有关存储训练数据的内存结构部分。很久以前,我就通过匆匆扫过一遍的映像,认为crf++这部分的浪费非常严重。近期的阅读证实了这一观点。我还是用去年发布的0.44版。
一般来说,系统训练需要缓存两部分的内容,一部分是关于训练数据的信息,主要包括特征的表达式以及相应的频率,另外一部分用来LBFGS训练的矩阵缓存,包括lambda权值向量。后面一部分内容是不可或缺的。如果要节省内存耗费,可以考虑把第一部分内容在记录到磁盘后,仅仅留下特征的代号和对应的频率信息在内存中。
问题是,我发现, crf++没有这么做。所有的信息都保留在内存中,直到训练结束的时候一口气写入model文件。当然,crf++也不是什么都没有做。crf++在开始训练前,函数
bool TaggerImpl::shrink()
  {
    CHECK_FALSE(feature_index_->buildFeatures(*this)) << feature_index_->what();
    std::vector <std::vector <const char *> >(x_).swap(x_);
    std::vector <std::vector <Node *> >(node_).swap(node_);
    std::vector <unsigned short int>(answer_).swap(answer_);
    std::vector <unsigned short int>(result_).swap(result_);
    return true;
  }
中,
第一句对特征进行编码,后边4句企图释放掉已经无用的训练数据缓存。taku使用了标准的swap方式来释放stl管理的内容。不幸的是,这些内存其实根本就没有得到释放。注释掉这4句后,内存的使用也不会增长。简单来说,这组内存没有得到释放。
 
由于对stl不熟悉---实际上,我还不会用allocator---我使用标准c替代了相关部分。
首先,我用一个简单的自己管理的char *代替了std::vector <const char *> > TaggerImpl::x_,结果期望中的内存强制释放马上获得了10%的内存减少。
然后,我把model存盘分为两次,第一次在最开始的时候存下特征的表达式及其id,第二次在训练结束的时候存下lambda向量。在第一次存盘结束后,就释放掉特征表达式的缓存。这个缓存原始的crf++使用std::map <std::string, std::pair<int, unsigned int> > EncoderFeatureIndex::dic_;来管理的。我自己用标准c++ without stl重写了一个map。存盘结束后的内存释放又获得了10%的内存减少。
 
现在,主要的问题是,虽然只是影响训练数据装载的速度,但是我自己写的map在插入数据的时候比stl的要慢10倍。难道我要去偷看一遍stl? 困挠中。。。
 
 
11月2日

pocket crf的二阶crf特征的结果及其讨论

重复一下试验的设置。
语料:ctb segmented corpus from bakeoff-4,
训练语料 642246词
测试语料 80700词
 
6-标注集,b,b2,b3,m,e,s for each character in corpus
6-特征模版:C_{-1}, C_0,C_1, C_{-1}C_0,C_0C_1,C_{-1}C_1
一律用f-score度量结果
 
运行的cpu是core duo T7600, 2.33G, 3.2G mem
 
pocket crf ver 0.30 给出的结果
(a) +1阶状态转移特征    %y[-1]%y[0]:                                                   0.949298
(b) +1,2阶状态转移特征 %y[-1]%y[0]+%y[-2]%y[-1]%y[0]:                      0.949590
(c) +1,2阶状态转移特征 %y[-1]%y[0]                              +%y[-2]%y[0]:  0.949636
(d) +2阶状态转移特征                         +%y[-2]%y[-1]%y[0]:                   0.949661
 
注意到,按照pocket crf的结果,2阶CRF对于分词学习的贡献微乎其微。(a)运行时间大约3小时,(b),(c),(d)大约运行20-24小时。
内存使用,均为450M左右。
crf++ ver 0.44 给出的结果
(e) +1阶状态转移特征    %y[-1]%y[0]:                                                   0.963407
运行时间,pocket crf和 crf++ 相当。内存使用,crf++在(e)上要1G。
注:
ctb语料的bakeoff-4官方结果最好成绩为0.9596
 
我注意到,pocket crf生成的model文件远远小于crf++,大约只有后者的1/3。难道这就是 crf++ 保持精度领先的秘诀?
 
pocket crf作者的blog
上面报告了msra2005/bakeoff-2语料上的结果
“ 原来是1order CRF, 训练5小时,消耗内存836M,测试结果0.959
加了一个%y[-2]%y[0]模板,训练18小时,消耗内存988M,测试结果0.961
我猜测,2阶crf之所以在作者报告的这一情形导致显著的改进的原因是n-gram学习在这一语料上没有达到性能饱和,msra2005语料上bakeoff-2的最好成绩是0.964,使用我上面的6-tag+6-feature templates,性能可以轻易达到0.972.
作者的这一结果我理解为,当基线性能很低的时候,所获得改进不是实质性的。
 
 
10月21日

新东方的罗老师骂苹果公司产品的粉丝

以下是转载,我有一个ipod, 但是我一直拿它作移动硬盘,所以我转了这篇文章出出气。

 

 

史蒂夫.乔布斯早年把苹果的系统设计成封闭式的时候,苹果粉丝们说他有性格,酷,后来他为了迁就市场开始有所妥协的时候,他们说他成熟稳健,牛X。

PC用户呢?比尔.盖茨朝左的时候,他们说他王八蛋,比尔盖茨朝右的时候,他们说他龟儿子,比尔.盖茨把他几乎所有的财产都捐出来做慈善事业的时候,他们翘起了大拇指。

水洗

ipod 最为人诟病的是它光洁的镜面外壳很容易弄上手印或是划花,消费者对此做出负面评价的时候,凶悍忠诚型的苹果粉丝的反应是“你爱买不买!谁逼你买了?”温顺忠贞型的苹果粉丝的反应则是垂头丧气。洗脑派的乔布斯老师看到这种情况就端着一盆水走过来说,“划花了有什么关系?这样更酷,因为每个人划花的都不一样,等用了一段时间之后,你们每个人就都能有一个独一无二,与众不同的ipod了。”于是两种粉丝都湿漉漉地笑着说,“液!”

“其实,你只要点击鼠标的同时按住control键就….”

2005 年,迟钝的苹果公司终于推出双键式鼠标的时候,很多一直硬着头皮坚持用苹果独有的弱智单键鼠标,嘴里还念叨着“复杂的社会,简单的苹果”和 “think different”的傻X苹果粉丝们终于装不下去了,纷纷冲出来购买,还在网上互相通知难兄难弟们,“苹果鼠标有右键了!苹果鼠标有右键了!”是啊,苹果只用了短短的二十多年就在鼠标上加上了右键,这是多么了不起的发展速度啊,要知道自行车可是诞生了近百年的时候,才有人给它加上了车闸的呀。

我第一次在一个朋友(他是个超级苹果粉丝)的办公室里试用苹果电脑的时候,很惊讶的发现苹果鼠标没有右键,更惊讶的是我发现苹果的操作系统是支持PC双键鼠标的,但我这个宝贝哥儿们说他一直都用单键的苹果原装鼠标,还告诉我,“其实,没必要用双键鼠标,在苹果上,你只要点击鼠标的同时按住control键就能调出右键菜单…”我看了看他,很心疼地对他说,“傻X,别这样,对自己好一点儿。”

“你要是把内存升级到两G,mac的优势就显示出来了”

我自己买的第一台苹果电脑是玩具一样的mac mini G4,原配的是256M内存(那时候很多PC笔记本也只有这点儿内存。另外,国产的低端笔记本价钱也跟mac mini差不多),我按照苹果论坛上一些网友的建议把它升级到512M之后,发现还是慢得不像话,这时候在我常去的论坛上一些人开始怀疑同档次的mac比 pc慢,于是有苹果粉丝出来说,“你把内存升级到一个G,mac的优势就显示出来了”。我就找了卖电脑的朋友换上了1G的内存,可觉得还是很慢,于是到论坛里汇报了一下。结果好几个资深苹果粉丝又表示,“你要是把内存升级到两G,mac的优势就显示出来了”。X,我要是把同档次的pc升级到两G内存,它会快得让我不好意思。

愤怒、委屈和伤心

苹果公司起初是卖电脑的,还卖得很好,后来电脑卖不出去,它就开始贩卖“苹果文化” 了,最终培养了一大批忠诚的、“有个性”、“有品位”的苹果势利眼。很多苹果粉丝愿意花更多的钱买甚至可能更差的东西的一个深层心理是,得以跻身这个“有个性”、“有品位”的群体,并且获得一种(以优越的姿态俯视那些平庸的 pc用户带来的)美好感觉,使得那点额外的支出变得微不足道。本质上,一切激起感性消费欲望的奢侈品或多或少走的都是这条路子。这一定程度上解释了为什么当史蒂夫.乔布斯决定让苹果电脑转用比PoworPC G5更有优势的Intel芯片时,很多最忠诚的苹果粉丝和乔布斯粉丝都感到愤怒、委屈和伤心:在他们看来,苹果用什么芯片并不重要,PowerPC芯片是不是有缺陷也不重要,重要的是他们心中高贵的苹果不能跟阿猫阿狗都在使用的*芯片Intel搞在一起,听听Intel芯片的名字吧,“扣肉”!对这些 apple snob来说,苹果本来是LV,是prada,现在好像一夜之间要变成班尼路、真维斯,甚至是红旗牌晴纶三角裤衩了。我到现在都很清楚地记得乔布斯宣布改用Intel芯片时,苹果粉丝们的论坛上一片哭爹叫娘的声音,“以后我们怎么办?”“那苹果跟pc还有什么区别了?”“史蒂夫背叛了我们!”

重症患者甚至对苹果公司发布Boot Camp来允许苹果用户在mac上安装windows都感到愤怒,认为这是“让肮脏的血液流在高贵的血管里”。

比一个傻X更让人受不了的,是一个咄咄逼人的傻X

下面的问答摘自一个在许多苹果论坛上流传的帖子,一个典型的apple snob的嘴脸。

苹果能****吗?

苹果首先不是银行,不是万能博士。

苹果不能当手枪,防弹性能有限,不会游泳。简单的说,苹果不是万能的。但是现在好像pc是。

所以,强烈建议想验证苹果是不是万能的用户,就此打住。苹果也就一台机器。很多这类的问题是不能的。如果你强烈需要苹果能怎样怎样。别问了。直接购买pc。

苹果的速度为什么这么慢?

给你一台超级电脑,你的应用也不会快到哪里。

随着pc能力的加强,你要找最快的机器,首先找银行安排大额提现,然后去攒pc。

再次郑重说明,苹果不是最快的,即使是所谓传统的ps,也不是最快的。

但是再次郑重说明,有一些老鸟,用PowerG3也比你用至强快。很大因素上,决定工作的是人,不是机器。
对,我用386打字也比你用p4打字快,因为你从来没打过字。

苹果为什么这么贵?

这是苹果公司的策略。这个定价有他的合理性。苹果公司也要盈利。

当然,这世界上大部分人巴不得苹果机器都白送。

苹果的售后服务相关问题

郑重告诉新人,苹果的售后服务不是最好的。老鸟们都在忍受。你看重售后的话,请选择一些pc。

我花了这么多钱,得到这么一台烂机器......

郑重告诉你。钱是你花的。机器是你买的。通过上面的问题,你已经知道苹果不是最快,不便宜,售后不好,你还要买。坛子没有办法负责。因为这里不是消费者协会,不是法院。

如果你打算状告苹果公司诈骗的话,我支持你。但是律师费用自己承担。

苹果和pc比哪个更好??

这是最无聊的问题。

你这样10个字,可能引起无数人忍不住争论。是一种不负责任的行为。

我仅代表个人,觉得你无聊。

你有选择的权利,你可以不选择苹果。你也可以骂我,但是本人有限程度保留回骂的权利……

“Mac users have lower IQ”

Mac用户的IQ比较低

注:此文首发于煎蛋,原作者为徐 杰 (专栏)。

John Hein博士的一项研究表明:Mac用户平均IQ要比PC用户低15%。

超过6000多的参加者接受了测试,结果清晰的显示IQ比较低的人会倾向于使用Mac。

通常人们都认为Mac用户所受的教育更高,所以IQ也更高。但是结果却正好相反。Mac用户只答对了基础问题的75%,而PC用户却高达83%。

John Heinz博士给出了如下两个理由:

1) Mac用户买电脑注重的只是外观和样式。他们不清楚电脑的真正性能。

2) Mac用户已经被洗脑了,他们考虑的是艺术化而不是理性。