Udacity DeepLearning Assignment

deep learning入门公开课 课程链接的课堂作业,类似于TensorFlow的教学实践,总共分为三部分:首先是环境的搭建及TensorFlow的基本介绍;其次是手写字母识别(比手写数字识别数据集MNIST要困难一点),前后使用了线性模型、NN、DNN、CNN模型。最后两个任务是在维基百科数据集上做词向量表示和序列学习,分别使用了word2vec和LSTM算法。TensorFlow是个通用性很高的框架,通过图的形式定义网络结构及运算流程非常清晰易懂,提供的算子也越来越丰富,感谢前人造的轮子。
这里简单记录下完成作业过程中遇到的一些问题,前期还是比较坎坷的,后面就比较通畅了,详细代码存放在我的Github项目中。

more >>

UIUC《Microeconomics Principles》on Coursera

1. Basic Principes

经济学分布在生活的每一个角落,指导我们在面临多个选项时做出选择,合理分配有限的资源。这里的资源既可以是自然资源和社会资源,也可以是个人的时间、恋爱关系等。微观经济学里最重要的几个原则:
Opportunity Costs:机会成本指为了得到某一个东西放弃的其他选项中的最高价值者。比如晚上有一个免费但是不喜欢的演出A和一个愿意为之出50刀但实际票价只有40刀的演出B可以选择,那么选择看A的机会成本就是10刀(value-cost)。
Net Marginal Benefit Principe:根据下一个行为产生的收益差(边际效益)而非总体收益做决策。比如传球比过人的成功率高,但是不能每次都选择传球。
the Invisible Hands Principe:每个个体都出于自己利益最大化的考虑做决策,整个社会的收益也会最大化。比如想要减少汽油的使用,只要提高油价,大家就会选择买节能的车。
trade create value:交易使人可以专注于最擅长的领域,从而提高了整体的生产效率。

more >>

《人类简史:从动物到上帝》读书笔记

2016年度最佳读物,值得一生推荐的好书。作者以上帝的视角回顾了人类发展史上的三次革命,然而这并不仅仅是一本简单的历史书,除了举例和陈述外,作者从心理学、经济学、哲学等多角度对历史的抉择进行了分析。虽然作者人类发展持较悲观的态度,很多观点略显消极和偏激,但读完之后仍有一股三观爆刷的快感。

more >>

Udacity《Deep Learning》学习笔记

deep learning入门公开课 课程链接,由Google首席研发科学家Vincent Vanhoucke主讲,以实战的视角介绍了常用deep learning算法,原理性的内容大多一两句话带过没有详细的证明推导,但也算句句珠玑了,wide but not very deep。作业使用修改过的MNIST(手写数字识别)数据集,python编程,在scikit-learn和TensorFlow平台上完成,可以借此熟悉平台使用。主要内容包括机器学习基本概念、深度神经网络、卷积神经网络、文本和序列的深度模型。

more >>

Tree Ensemble Models

集成学习通过训练多个分类器,并将这些分类器组合起来以达到更好的预测性能。集成学习通常会比单模型的结果好,可以在提高精度的同时降低overfitting,且模型间的差异越大(diversity)提升效果越显著,这个差异性可以体现在数据、特征、模型、参数等多个维度。

下面一个例子可以看到简单的ensemble就可以达到远高于单个分类器的效果:
比如有三个分类器,准确率都为0.7,如果采用多数投票的方式进行ensemble,那么得到的正确率为:0.7*0.7*0.7+0.3*0.7*0.7+0.7*0.3*0.7+0.7*0.7*0.3=0.788

more >>

从Logistic Regression到FTRL

Logistic Regression在Linear Regression的基础上,使用sigmoid函数将y=θx+b的输出值映射到0到1之间,且log(P(y=1)/P(y=0)) = θx+b。并且在靠近0.5处坡度较大,使两侧快速趋于边界。

Hypothesis可以认为是y=1时的概率,表示为:

more >>

python数据结构

记录一下使用python数据结构过程中踩过的坑及一些常见应用。同时参照了《Data Structures and Algorithms in Python》这本书,其中讲了python数据结构底层的实现原理及很多高效使用的建议。

List

列表是一个可变的序列,可以直接按索引访问,也可以动态的删减,表示为[x,y,z]

多维数组

如果使用array = [[0] * 3] * 3对一个33的二维数组进行初始化,当操作array[0][1] = 1时,发现整个第二列都被赋值,变成:[[0,1,0],[0,1,0],[0,1,0]]
The Python Standard Library里的解释是:list
n—>n shallow copies of list concatenated, n个list的浅拷贝的连接。
因此正确的初始化方式应该是:
array=[([0] * 3) for i in range(3)]

more >>

Data Visualization (UIUC)

week 1: The Computer and the Human

visualization is an interface between the computer and the human. 因此我们要首先了解human和computer的特点才能做好visualization。

Photorealism

用2D画面表示3D效果常用的技巧

  • occlusion:不透明物体的覆盖关系暗示远近关系(strongest cue)
  • illumination:通过亮度差异暗示平面方向,强调细节
  • shadowing:制造光线的occlusion
  • perspective:大小暗示深度(近大远小)


more >>

位运算实现加减乘除

加法

一位加法时,和是x XOR y的结果,而进位恰好是x AND y的结果.
多位加法时,可将x, y的每一位级联计算:先计算x和y的第零位,将计算所得的进位传入到x和y的第一位的计算中,依次进行直到计算完最高位为止,此时将每一位计算所得的和连接起来就是最终的和。计算机中的加法也是使用这种原理来实现的。
然而,逐位取出计算操作复杂,可以一次求出所有位上的和及进位,然后递归调用此方法直至进位为0。

1
2
3
4
5
6
7
8
9
10
11
public int add(int x, int y) {
// if(y==0)
// return x;
// return add(x ^ y,(x & y) << 1);
while (y != 0) {
int tmp = x ^ y;
y = (x & y) << 1;
x = tmp;
}
return x;
}

more >>

《影响力》阅读摘要

时隔三年重读了罗伯特·西奥迪尼的《Influence:The Psychology of Persuas》,社会心理学经典,讲述了说服力背后的心理行为模式:互惠、承诺和一致、社会认同、喜好、权威、稀缺。市面上流传的“经典版”是人大出版社的,但张力慧译的社科版更流畅一些,其他教材版及各种演绎版本都是渣渣,不推荐阅读。

more >>