[转] Ubuntu14.04LTS安装TensorFlow

1. Pip

如果已经安装过pip,可以跳过这里的安装步骤。

$ sudo apt-get install python-pip python-dev python-setuptools build-essential
$ sudo pip install --upgrade pip
$ sudo pip install --upgrade virtualenv

为了检测是否安装好,可以查看pip的版本:

$ pip --version
pip 8.1.2 from /usr/local/lib/python2.7/dist-packages (python 2.7)

2. Tensorflow

接下来,就可以按照Tensorflow Download and Setup中的Pip Installation开始安装,命令如下:

# Ubuntu/Linux 64-bit, CPU only:
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
继续阅读[转] Ubuntu14.04LTS安装TensorFlow

#2 大话机器学习中的贝叶斯 Bayesian

这一期, 我们来谈一谈机器学习中的贝叶斯. 概率论中贝叶斯理论, 作为概率的一种“思考方式”, 十分通用. 当机器学习应用中, 贝叶斯的强大理论提现在多个领域, 包括超参数贝叶斯, 贝叶斯推断, 非参贝叶斯等等…

入门

机器学习中的贝叶斯, 首先要区分概率中频率学派和贝叶斯学派的. 网上有各种各样的解释, 其实, 我们可以从机器学习的角度去解释.

机器学习问题可以总结为: 找到一个好的 \(\theta\) 代表一个模型, \(\theta\) 表示这个模型的所有参数, 而这个模型就是我们能够训练出的最好模型(至少我们认为是最好的).  什么是最好的模型? 假设有未知数据集 \(X_{unknown}\) , 如果 \(P\left(X_{unknown}\middle|\theta\right) = 1\) , 那么这个模型就是最好的. 当然这是不可能的, 也许只有上帝才能对所有的未知100%准确预测. 但我们一定是希望 \(P\left(X_{unknown}\middle|\theta\right)\) 越大越好, 趋向于1.

如何做到使得 \(P\left(X_{unknown}\middle|\theta\right)\) 越大越好 ? 这就引出了概率论中的两大学派: 传说中的”频率学派”和”贝叶斯学派”. 两大学派区别在哪里? 看下面这个公式:

\(P\left(\theta\middle|X_{train}\right) = \frac{P\left(X_{train}\middle|\theta\right)P\left( \theta\right)}{P\left(X_{train}\right)} \)

没错! 这就是大名鼎鼎的贝叶斯公式 ! 机器学习中, \( X_{train} \) 是真实的训练数据或者抽样数据 . \(P\left(\theta\middle|X_{train}\right)\) 是后验概率(posterior)分布 . \(P\left(X_{train}\middle|\theta\right)\)是似然概率(likelihood).  \( P\left( \theta\right) \)是先验概率分布(prior). \(P\left(X_{train}\right)\)是归一化”证据”(evidence)因子.

“频率学派”认为, 后验概率和先验概率都是不存在的, 模型 \(\theta\) 不论简单复杂, 参数已经是上帝固定好了的, 只要根据大数定理, 当训练数据足够大, 我们就能找到那个最好的 \(\theta\) . 于是公式变为:

\( P\left(X_{train}\right) = P\left(X_{train}\middle|\theta\right) \)

无论有没有 \(\theta\) , 抽样数据\( X_{train} \)出现的概率都是一样的, 因为任何数据都是从上帝指定的模型中生成的. 于是我们找到 \(\theta\) 的任务就很简单, 最大化 \(P\left(X_{train}\middle|\theta\right)\) 似然概率就行了. 数据量越大, 模型拟合度越高, 我们越相信得到的 \(\theta\) 越接近上帝指定的那个 \(\theta\). 所以”频率学派”预测投硬币正反的概率的方法就是, 投10000次硬币吧, 看看正面出现多少次. 这种基于统计的预测有很多缺点, 首先它指定了一个固定概率, 如果上帝指定的模型不是固定的呢? 另外, 如果数据量不足够大, 预测会不会非常不准确? 当数据维数增大时, 实际计算量也会变得非常大.

“贝叶斯学派”认为, 人类的知识是有限的, 我们不知道上帝的安排, 就先假设一个先验(我们已有的知识), 再根据训练数据或抽样数据, 去找到后验分布, 就能知道模型最可能是个什么样子. 继续阅读#2 大话机器学习中的贝叶斯 Bayesian

机器学习 常见面试题 总结

前言:

找工作时(IT行业),除了常见的软件开发以外,机器学习岗位也可以当作是一个选择,不少计算机方向的研究生都会接触这个,如果你的研究方向是机器学习/数据挖掘之类,且又对其非常感兴趣的话,可以考虑考虑该岗位,毕竟在机器智能没达到人类水平之前,机器学习可以作为一种重要手段,而随着科技的不断发展,相信这方面的人才需求也会越来越大。

纵观IT行业的招聘岗位,机器学习之类的岗位还是挺少的,国内大点的公司里百度,阿里,腾讯,网易,搜狐,华为(华为的岗位基本都是随机分配,机器学习等岗位基本面向的是博士)等会有相关职位,另外一些国内的中小型企业和外企也会招一小部分。当然了,其中大部分还是百度北京要人最多,上百人。阿里的算法岗位很大一部分也是搞机器学习相关的。

下面是在找机器学习岗位工作时,总结的常见机器学习算法(主要是一些常规分类器)大概流程和主要思想,希望对大家找机器学习岗位时有点帮助。实际上在面试过程中,懂这些算法的基本思想和大概流程是远远不够的,那些面试官往往问的都是一些公司内部业务中的课题,往往要求你不仅要懂得这些算法的理论过程,而且要非常熟悉怎样使用它,什么场合用它,算法的优缺点,以及调参经验等等。说白了,就是既要会点理论,也要会点应用,既要有点深度,也要有点广度,否则运气不好的话很容易就被刷掉,因为每个面试官爱好不同。

朴素贝叶斯:

有以下几个地方需要注意:

1. 如果给出的特征向量长度可能不同,这是需要归一化为统一长度的向量(这里以文本分类为例),比如说是句子单词的话,则长度为整个词汇量的长度,对应位置是该单词出现的次数。

2. 计算公式如下:29224144-9bad2a8789f549cd88a567a7c2ca7465

其中一项条件概率可以通过朴素贝叶斯条件独立展开。要注意一点就是\(P\left(w\middle|c_i\right)\)的计算方法, 而由朴素贝叶斯的前提假设可知: \(P\left(w_0,w_1,w_2…w_N\middle|c_i\right) =P\left(w_0\middle|c_i\right)P\left(w_1\middle|c_i\right)P\left(w_2\middle|c_i\right)…P\left(w_N\middle|c_i\right)\)

因此一般有两种,一种是在类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本的总和;第二种方法是类别为ci的那些样本集中,找到wj出现次数的总和,然后除以该样本中所有特征出现次数的总和。

3. 如果\(P\left(w\middle|c_i\right)\)中的某一项为0,则其联合概率的乘积也可能为0,即2中公式的分子为0,为了避免这种现象出现,一般情况下会将这一项初始化为1,当然为了保证概率相等,分母应对应初始化为2(这里因为是2类,所以加2,如果是k类就需要加k,术语上叫做laplace光滑, 分母加k的原因是使之满足全概率公式)。

朴素贝叶斯的优点:

对小规模的数据表现很好,适合多分类任务,适合增量式训练。

缺点

对输入数据的表达形式很敏感。 继续阅读机器学习 常见面试题 总结

快速入门机器学习 图解机器学习10张经典图片

入门机器学习, 总有几张图片, 令人印象深刻. 以下是十张经典图片, 图解机器学习, 非常有 启发性:

1.  训练错误和测试错误。这张图告诉我们训练错误越小,不一定是最好的。训练误差和测试误差要达到一个平衡,才是最好的。下图展示了ESL 图 2.11, 训练错误和测试错误与模型复杂度的关系.

Test and training error
Test and training error

2. 欠拟合”和”过拟合”. 出自PRML 图1.4. 下图数据点是从绿色曲线生成的. 拟合参数是M,  通过M得到的模型是红色曲线. 可见, 如果M过小, 得到的模型不够复杂, 不能还原真实模型, 也就是”欠拟合”. 如果M太大, 得到的曲线复杂度过高, 也不能真实还原模型, 也就是”过拟合”. 猜到了吧? 还是要在”欠拟合”和”过拟合”之间找到一个平衡呀~

Under and overfitting
Under and overfitting

3. 奥卡姆剃刀(Occam’s razor). 出自ITILA 图 28.3. 为什么贝叶斯推断包含着奥卡姆剃刀的原理 ? 下图展示了为什么复杂的模型会变得低效。横轴代表了贝叶斯理论的汇报模型在可能数据集上被准确预测的可能性。\(P\left(D\middle|H_1\right)\) 代表了使用复杂模型\(H_1\)情况下,数据集\(D\)被准确预测的概率和置信度(Evidence);\(P\left(D\middle|H_2\right)\) 代表了使用较简单模型\(H_2\)情况下,数据集\(D\)被准确预测的概率和置信度(Evidence)。可见复杂模型\(H_1\)在预测时,一些数据置信度,或者信心很高,但是其实整体准确度, 不如模型\(H_2\) 。说什么来着? 模型复杂度也要平衡哦~
继续阅读快速入门机器学习 图解机器学习10张经典图片

六个鲜为人知的python数据分析库

Python 提供了高质量的环境和丰富的第三方库为开发者提供数据分析支持。不管是数据处理还是数据 可视化等等, 都有许多有用的库。一些库非常有名:PandasNumpyScikit-learn(我们有一期博客介绍过), NTLK 等等。另一些不是那么有名但是却在平时十分好用。这篇文章介绍6个这样的Python库, 希望对大家有帮助!

  • mrjob

mrjob是一个帮助你写用Python写MapReduce的库,可以让你写Mapper和Reducer程序,在本地,EMR(亚马逊弹性Map-Reduce),或者Hadoop集群上运行/测试。使用pip install mrjob就能快速安装。mrjob是Yelp开发并且每天有成千上万的下载量。Github地址项目地址有大量文档。

在python中使用datetime是件很痛苦的事。如果你用过python自带的datetime库去控制多时区,你一定会觉得不方便。delorean对datetime和pytz做了抽象使得操作更简单。它有很多好的功能使得切换多时区,标准化时区变得简单。

python自带的sorted()方法很高效。但是当你想排列[‘a2’, ‘a9’, ‘a1’, ‘a4’, ‘a10’]这样的数列,那就需要natsort这样的能同时排列字母和数字的库了。官网有更详细的文档。

应用中并不是总是需要多节点的大数据库。TinyDB是一个面向文件的小型数据库,可以在本地文件写入json来保存数据。它有1200行代码以及简洁清楚的API。可以用pip install tinydb来安装。更多详细文档请看这里继续阅读六个鲜为人知的python数据分析库

#1 最新 科学上网,翻墙 工具——经过使用测试的VPN,VPS

子曰:“工欲善其事,必先利其器。居是邦也,事其大夫之贤者,友其士之仁者。”  ——《论语·卫灵公

中国的学者,不会一点科学上网,怎么专心科研, 怎么好好报效祖国?(请允许我装一会B)好吧,直奔主题,我们怎么科学上网?以下是经过验证的可用的工具,请妥善保存

1.  搬瓦工,一年19.9美元,https://bandwagonhost.com/ 很不错的VPS,推荐洛杉矶机房。买下一台VPS主机,然后里面装好Shadowsocks 服务端。最后在你的PC/平板/手机端装上Shadowsocks客户端,就可以科学上网啦。有一些linux和python脚本经验的朋友,请进入教程shadowsocks科学上网,不复杂,只要耐心一定能搞定。另外Shadowsocks客户端的链接这里,windows,mac,android,ios都支持,棒棒哒。如还有问题,请加我私人微信号:yanchao727727。

2. digitalocean VPS https://www.digitalocean.com/ 便宜的VPS, 特别是对学生党有优惠,但是网络没有搬瓦工稳定。

继续阅读#1 最新 科学上网,翻墙 工具——经过使用测试的VPN,VPS

Linus: “终于神经网络也开始发展了, 我觉得这一点很有趣” —— linux 25周年, Linus谈神经网络和AI

最近的一篇spectrum IEEE热文: Linux 25周年:与创始人Linus Torvalds对话 受到大家关注。早在1991年还在芬兰赫尔辛基大学就读时,Linus Torvalds便创建出了最初的Linux操作系统内核。之后这个小小的内核很快发展成了一个功能全面的操作系统,可以运行在智能手机与服务器上,还有各种各样的小工具上。

David 9关注机器学习, 当然要看看Linus大神怎么评价近期机器学习和AI的, Linus认为神经网络,深度学习的进展, “我觉得这一点很有趣”, 他丝毫不担心真正的AI开始出现这件事情, 人工智能还没有到替代人类的时候, 做机器学习和人工智能的学者多数是会支持Linus的,因为即使是现在最前沿的深度学习, 也只是在某些方面优于人类而已。Linus还认为AI不会替代传统计算模型, 人们总是需要最高效的”服从”计算指令,这种无条件“服从”的高效计算是不可替代的。而人工智能的努力方向, 并不是“快”和”服从”, 而是智能。
继续阅读Linus: “终于神经网络也开始发展了, 我觉得这一点很有趣” —— linux 25周年, Linus谈神经网络和AI