Skip to content

学习Machine Learning

machinelearning1719

最近在Coursera上了一门Machine Learning的MOOC课程。

该课程是由Stanford的Andrew教授授课,内容由浅入深,从基础的机器学习概念到中期的几个利用机器学习的例子再到后来比较复杂的运用,Andrew教授讲得很清晰,哪怕你没有接触过机器学习,也能很容易理解课程。而且大部分课后都会有一个编程的大作业,让你用这周学到的东西实现一个真实的Machine Learning结果。编程大作业里面的内容被分割成一个个的小部分,当你完成了里面的一部分时,可以使用submit进行在线评判该部分是否正确。这有点像我平时OnlineJudge上刷题然后返回结果。

而当完成一份编程大作业的时候,那种感觉真的是非常满足。

比如在学到中期时,我了解了神经网络的算法,并使用该算法成功做出了简单的图像识别(识别图片中的阿拉伯数字):预先将图像的像素点处理好,然后构建多层神经网络,机器一步步学习调节参数,直到最后可以用作预测。

当一张图片显示在屏幕上,并且你的程序给出了该图片中的数字时,我发现原来自己这一周学的东西并不是非常理论性的内容,它能确确实实做出点很COOL的东西。

课程使用的是Matlab/Octave 进行编程,如果你没接触过这两门语言并不要紧,Andrew教授在课程中有讲解该怎么使用。而且,课程也会提供给你一定时限的Matlab授权(课程时间左右),同时,你也可以使用免费的Octave(GNU项目,两者语法基本相同)编程。我自己在Ubuntu下就是使用Octave完成编程大作业。

在此,我强烈推荐对Machine Learning感兴趣的童鞋去听一下这课,由于他的MOOC形式,你可以在任何你有空的时间看,形式非常自由。

我自己把我每周完成的编程作业上传到了>>Github<<以供自己复习和大家参考。

Apache2支持.htaccess实现目录加密

最近在使用学校电脑时,经常遇到这么个场景:

想下载个CodeBlocks用于coding或想下个vpt来玩会万智,但通过机房网络访问一些国外网站的下载速度只有10+kB/s,不到100m的文件总能让人等很久。

以前通过百度云来解决了这个问题,现在百度云下载这些文件需要使用客户端(大文件?),所以寻思着有没有什么好的解决方案。

突然想起自己在阿里云有个小服务器,在上面挂了个OJ,大多数资源都是闲置的。所以很简单,我就在网站目录下面传了我需要的常用文件上去,走阿里云的带宽下载。但直接放上去的文件所有人都可以下载,那对我的流量压力会比较大,所以我使用了.htaccess进行单目录加密。

首先开启Apache对.htaccess的支持(默认是关闭的)。

启动apache的mod_rewrite 模组

sudo a2enmod rewrite

重启apach服务器

sudo service apache2 restart

修改目录权限:

打开apache2.conf

vim /etc/apache2/apache2.conf

添加下面字段

<Directory /var/www/你需要开启加密的目录>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>

重启apache服务

sudo service apache2 restart

现在对.htaccess的支持已经打开,接下来编辑对应文件即可:
在你要加密的目录下,新建.htaccess文件,填入一下内容

AuthName "===LOGIN==="
AuthType Basic
AuthUserFile /var/www/你的加密目录
Require valid-user 你要的用户名

保存,然后生成口令:

htpasswd -c /var/www/你的加密目录 你的用户名

然后会被要求输入两遍密码,ok,现在就已经设置完加密目录了,快去试试吧。

pri_oj

大学-我与ACM的缘分

icpc-logo

时间总是过得很快,2014年才刚刚进入大学,转眼间便已然成为一名大三学生。

记得自己上大学前很喜欢看网络小说,对其中所描述的学院生活感到非常向往,父母亲戚在劝诫我不要打游戏时,也常常用上“游戏这种东西上了大学随你打”这类话。因为没有体验过,又因为人们口中的大学生活非常符合我对享乐生活的设想,所以我就把大学当做了一个非常美妙的“天堂”。

而刚上大学的那段时间也确实如此,我喜欢大学自由的上课风格,喜欢寝室无约束的玩游戏环境,也因为远离父母,终于有一种解放的感觉。可人总是有点“犯贱”,以前爸妈不让我玩游戏,我偶尔能玩一会感觉到非常满足,而现在任我玩时,我反而渐渐觉得有些无聊。玩游戏玩到无聊,所以注意力就开始转移到其他地方。我想起了初中时曾经买过c++书籍(虽然就翻了几页,而且还是谭浩强叫兽的),想起了编程这个玩意,所以就决定研究下编程。当时个人对C++这门语言比较认同,所以就准备先去图书馆借C++的书看。

先去网上找了找,大牛们推荐了《C++ primer》这本书,于是我去图书馆借本来看看。去了图书馆后,发现这书已经被人借光了,而空闲的只有《C++ primer plus》。我一看这书好像差不多,而且还加了个plus,好像很高端的样子,于是就开始读这书。这可以说是我的编程启蒙书。这本书看起来只加了plus,但和原来要的那本书可以说是天差地别。plus开始从C-style代码讲起,后面讲再单独讲C++内容。当时我看完C部分就感觉差不多,准备去小试牛刀。在偶然中和一个教编程的老师聊天时,我还非常自信的说“C++其实就是C加一点面向对象的东西”。现在想来,当时的自己不可不谓狂妄自大。C++和C其实可以说是两种风格差异巨大的语言,只是C++兼容了C的内容。

在这之后,一个学长向我推荐了学校ACM的教练,我通过电话并线下到办公室和教练陈老师聊了聊。陈老师给我介绍了计算机能做哪些有趣事情,并介绍了HDU_OJ,并让我去刷一下11页的题目。

我对其中说的一个简单例子印象很深:计算机能完成找迷宫出口。对这件事情我感到很困惑,当时的我知道编程里面有循环、判断语句,还有函数调用,但为什么就这些简单的东西就能完成迷宫中找一条路呢?当时没想出来,后来也因为新生的事情多,把它抛在脑后。

事实上,当时的我其实还什么都不会,11页这个任务也就有空去做一做,没空就拉倒。就这样一直到了大一上结束,我突然发现有很久没和陈老师联系了,于是自己又厚着脸皮跑办公室去找了陈老师。陈老师告诉我,寒假有ACM集训,你可以来参加一下。我一听觉得不错,就答应了下来,就这样,我第一次开始了ACM集训。

第一次集训,给新生讲了搜索的内容。搜索正是能解决迷宫找出口的方法,于是自己仔细听,却发现没怎么听懂。做习题时,别的大一同学都飞快做完5、6道题(zzt,xiang578),我却只能为了1道题而苦苦努力。当时第一次接触到了递归这个概念,也知道了回溯,但对搜索还是不能很好理解。人笨只能用笨办法,自己对着一份搜索代码只能实行单步调试,一步步看递归是怎么回事,为什么dfs在回溯时需要清除清除标记,一道“骨头的诱惑”能让我思前想后始终不得纲领。寒假集训还讲了些其他东西,但具体是什么依然记不太清,但自己对于搜索(或者说是递归)还没有入门。

集训结束后,我坐上了回家的高铁,顺手拿出了图书馆借的《挑战程序设计竞赛》翻了翻并仔细看了下汉诺塔(Hanoi)的过程。或许有些事情就是这么水到渠成,寒假集训半月始终不得要领的递归,在看完汉诺塔讲解以后突然一下子就明白了递归是怎么回事,同时也感受到了递归写法的简洁和强大。火车上只有短短的一小时,但这一小时的顿悟给我彻底打开了编程世界的大门。

OLYMPUS DIGITAL CAMERA

OLYMPUS DIGITAL CAMERA

关于编程,其实我在学算法的时候比学数学抱有更大的热情。数学的推理非常美妙,但也只局限在一个小圈子里的人能看得懂。而编程这个东西可以把我掌握的东西通过程序实现出来,当实实在在的东西出现在电脑上时,我收获的是巨大的成就感,或者说,我能确切感受到我也改变世界的能力。

在这之后,我加入了校ACM集训队,并参加集训。寒暑假教练会在vjudge上拉比赛,平常会安排时间找人讲课,就这样,我大学除了上课,周二下午公休在集训,周四下午公休在集训,周日一天集训,周六一般也会跑去机房写题,人生被ACM充斥了大量时间。在这期间,我也认识了许多集训队的小伙伴,zzt , xiang578 , wtq , godWang 等等。 (Continued)