Learn

最近看自然语言处理词频统计的时候,看到的一种方法,小记于此。 伪计数可以看做是一种平滑,由拉普拉斯提出,也称为拉普拉斯平滑。 伪计数估计量的具体公式是: $$ \hat\theta_i = \frac{x_i + \alpha}{ N + \alpha d} \quad (i = 1,…,d) $$ 其中$$\hat\theta_i$$是估计量,$$x_i$$是观测到的事件分类,$$\alpha$$是平滑参数(有些学者认为应该是1,不过一般都比较小,比如取0.5),$$N$$是观测事件总数,$$d$$是观测值的可能分类,例如二分类问题中$$d=2$$ 那么这个公式是什么意思呢?具体地说,为什么要这么规定这种平滑?那是因为这种平滑的好处是它的值在经验估计$$\frac{x_i}{N}$$与均匀分布概率$$\frac{1}{d}$$之间。也就是很好的完成了从事实发生概率到随机发生概率的平滑任务。 再具体一点是什么意思呢?那么我觉得就要从它的来历说起了。历史上,拉普拉斯试图估计明天太阳升起的可能性的时候,提出了这个概念。 大家都知道,太阳当然会升起啊!不升起来的概率(或者说观测到不升起来的次数)为0。 等等,那可不一定,至少拉普拉斯不这么认为,他甚至认为日出的前一秒,也不能确定能不能观测到太阳升起。当然,这不是抬杠,仔细想想确实是这个道理,毕竟谁也不知道太阳会不会被一个极小概率的事件毁灭。 那么,这个概率到底是多少?这个概率怎么计算出来既可以满足事实(姑且叫做“事实概率”),又可以满足幻想(姑且叫做“幻想概率”)。答案是:平滑。 比如,从我开始观测,一共是$$N=98$$次观测,其中有$$x_{i}=0, i=no\ sunraise, i\in \{sunraise, no\ […]

最近翻译了两篇欢迎词,发现这个东西和英文学术写作/翻译差别挺大的,有很多正式场合专用的称呼/套话,查了挺多资料,记录于此。 首先是称呼,这个一般是开头第一句话: 理事长:Managing Director; Chairman 副理事长:Deputy Managing Director 常务理事:Executive Director 理事:Director 常务监事:Executive Supervisor 监事:Supervisor 秘书长:Secretary-General; Chief Secretary 会务顾问:Advisor; Consultant 董事长:Chairman 总经理:President; General Manager 副总经理:Vice President; Vice GM 经理:Manager 副理:Deputy Manager; […]

最近感觉很多应该掌握的技术虽然都知道,也用过,也能说上一知半解,但是没有成系统串起来,趁着读研好好梳理一下需要掌握的知识。 语言 C++:阅读《C++ Primer》 Python:重温,着重温习高级特性 Java:重温,重拾老本行:),官方Learning path Javascript(及其常用框架):按照现在的流行程度再不学不学真是不行了… 算法 基本算法:阅读《算法》 Linux Shell 脚本:阅读《Linux Shell 脚本攻略》 Linux编程:阅读《Unix环境高级编程》 异构/并行计算 CUDA:按照这个Learning path学习基础知识,阅读《CUDA C Programming Guide》以及《CUDA C Best Practices Guide》 阅读《多核应用编程实战》 OpenCL:暂无具体打算,作为了解。 机器学习 数据挖掘基础理论:阅读《数据挖掘导论》 […]

虽然用Linux好几年了,但是对shell脚本的掌握基本为零……最近需要做一些文件批量重命名,图像批量预处理,文本批量预处理的琐碎而重复的工作,于是乎下定决心好好学习一下shell脚本。于是找了一本口碑不错的shell脚本入门书—-《Linux Shell 脚本攻略 第2版》,是印度人Shantanu Tushar和Sarath Lakshman写的。边看边写博客系列(计划分九个系列完成)当做读书笔记,同时,也不完全是读书笔记,会加上一些解释的链接或者个人的经验:)当然,如果有人看,也算是做个“脱水版”的精炼shell脚本入门“指南”吧:) 基本的文件格式结构,运行规则:文件开头第一行 #!/bin/bash(这里可以是别的shell的路径),#!这玩意叫shebang,运行可以$ bash script.sh 这种运行方式首行的shebang就没什么用了,或者$ chmod +x script.sh 然后 $ ./script.sh。 命令间隔符:换行符或者分号; 是等价的,也就是说 $ cmd1; cmd2 等同于 $ cmd1 $ cmd2。 终端的打印:最基本的echo,$ echo “Hello […]

看完了TensorFlow官网的两份白皮书后,产生了阅读源码的念头,不过,git clone下来以后,仅从代码大小上就可以看出TF的体量之大,源码绝不是一己之力一时半会能够理解的。几番搜索,发现网上关于源码阅读的教程确实是很少,这里有一份不错的,这里还有google group里的讨论,为了方便墙内读者阅读,引用于此: core/ contains the main C++ code and runtimes. core/ops/ contains the “signatures” of the operations core/kernels/ contains the “implementations” of the operations (including CPU and CUDA kernels) […]

本篇文章中软件的下载需要科学上网支持。 主要参考资料为这篇文章,主要步骤相同,对参数,细节做了说明。 一般来讲,深度学习的模型训练需要消耗大量的计算资源,例如Google的Inception模型,使用了8张K40显卡训练了两周,普通开发者一般没有这样强大的计算资源支撑。但是迁移学习提供了捷径,通过重训练已训练模型的最后几层,就可以将模型用于自定义图像的分类。TF提供了用于重训练的工具集。 因此,在尝试自己搭建模型并训练模型之前,应首先尝试使用重训练模型方法,这样的好处是可以先快速评估至少可以达到的准确率,对以后的模型建立,优化提供基线(baseline)。 并且,重训练生成的权重值文件可以用于TF移动端app,移动端app直接加载训练好的权重值,通过摄像头实时识别,这将在下篇博客中讲解。 这次项目中使用的是基金会提供的视网膜病变图像,数据集比较小,只有不到400张,依然达到了不错的准确率(测试集80%左右),本教程中,以开源数据集为例做示范。 开源数据集下载地址: http://download.tensorflow.org/example_images/flower_photos.tgz 首先,下载数据集 $ curl -O http://download.tensorflow.org/example_images/flower_photos.tgz 解压到某一目录下,比如~/Downloads/flower,可以看到,flower_photos文件夹中有5个分类,在重训练过程中,TF提供的工具集会将这五个分类文件夹的名称作为类别标签,因此,若需要修改分类标签,应在这里修改文件夹的名称。 上篇博客讲解了如何从源码安装TF(是本篇博客的基础)。 首先,浏览至源码目录顶层,例如: $ cd ~/tensorflow 然后执行重训练Python程序(这里的参数仅仅是示例,可直接打开源码文件,底部有所有参数以及参数说明,可用于进一步调参使用),注意路径替换为自己的路径: python3 tensorflow/examples/image_retraining/retrain.py \ –bottleneck_dir=/home/hp/Downloads/flower/bottlenecks \ –model_dir=/home/hp/Downloads/flower/inception \ –output_graph=/home/hp/Downloads/flower/retrained_graph.pb \ –output_labels=/home/hp/Downloads/flower/retrained_labels.txt […]