【AI100 导读】本系列文章将陆续向大家推荐一些数学用书,今天这篇文章有针对性的介绍了数学不好的人,究竟该怎样学习人工智能。
如果你已经看过本系列的第一篇文章,那么肯定已经具备了某些数学基础。相应地,某些数学表达对你来说变得越来越熟悉,越来越重要。
但是关于人工智能,还有一个小秘密要告诉你:
实际上,刚起步的时候,不一定需要具备很多的数学基础。
如果你是一名开发人员或者系统管理员,你可能已经调用了大量的根本就不熟悉的库和各种框架。例如,当你调用 curl 的时候,你并不需要理解其内部的 web-scraping 是如何工作的。同理,人工智能(AI)的学习也是如此。
目前,计算机软件领域存在大量的框架和各种不同的项目,这些框架和项目使得人工智能的学习很容易便可掌握,并不需要达到数据科学家博士那样高的水平。但不要被我所误导,我并不是说数学不重要。数学可以帮你更加清楚的理解人工智能的深层含义。同时,它能帮助你仔细地阅读一些研究论文和前沿书籍,如 Ian Goodfellow 所写的 Deep Learning 等。所以,请继续学习我在先前的文章中给你列出的那些书籍吧。但是如果你想开始运用人工智能,那么今天就可以开始了。
让我们从一些实用的项目开始吧。
我的学习方法与 The FirstTwenty Hours 中所讲述的优秀方法非常类似。我们都知道10000小时法则:如果要真正的掌握一项技能,需要投入大量的时间。但是我们还没到要掌握某项技能的程度,仅仅处于入门阶段。那么,让我们立即开始学习吧,你不需要很多时间,但是却充满了乐趣!
方法很简单,以下就是其基本要素:
很简单是不是?那么让我们开始吧!
选择一个项目
首先,你需要选择一个项目,一个会真正激励你去不断尝试的项目。
一个奖金100万美元并且有机会深入研究肺癌的项目怎么样呢?
Kaggle 是一个机器学习竞赛平台。现在 Kaggle 正在举办一个奖金高达100万美元的比赛,目的是提高肺癌的分类效率。任何人都能参加这个比赛,当然也包括你。
我知道你此刻的想法,肯定觉得自己没有机会赢取这个比赛,毕竟是一个重量级的比赛。但我很高兴你能阅读到这里,因为接下来我们要学习第二步。
克服自我否定
在学习任何新东西之前,都要尽可能快的打消自我怀疑的想法,这一点非常重要。The First Twenty Hours 中提倡人们消除干扰,有计划地学习和工作。同时,它还提出了诸如冥想、肯定思维或者喝酒等方法。无论是哪种方法,只要能让那些干扰的声音走开并能让你全神贯注的工作,都可以使用。如果你需要一本书来帮助你,那么我推荐 You Are a Badass(已有中文版出版——《你骨子里是个牛人》,https://read.douban.com/ebook/21164072/)。这本书风趣幽默,十分尖刻,是难得的杰作。
当下,你可能仍未找到适合自己的方法。但是没关系,你很快就能找到的。
在学习的第一阶段,感到困惑和沮丧是必然的。所以,不要让困惑和沮丧打败自己,将其视为踏上正轨的标志吧,你正学习某些非常有价值东西!
你可能不会赢得比赛,但是这又怎样呢?你只需要在截止日期之前,提交完整的结果就行了。不是每个人都能获得马拉松比赛的冠军,但是完成马拉松比赛本身就已经很了不起了,不是吗?
但是你知道吗?你真的有可能会赢哦,相信我。
作为机器学习的业余爱好者,你可能没有接受过多年的理论训练和思维训练,专业程度远远低于专业人士。但是,还记得那个学生的故事吗?他只是将黑板上的两道未曾解决的数学问题当成了家庭作业,最终却把这两个数学问题都解决了!事实上,数据科学比一般的科学更加具有吸引力,它吸引着各个领域的学者。所以,加入数据科学领域并勇敢的尝试吧!
谁知道接下来会发生什么呢?
你很可能会发现一些专家都还没有发现的东西,并且在癌症检测方面做出贡献,最终把这100万美元带回家。
大量尝试,直面挑战
如果你是一名开发者,那么你肯定知道这句口头禅,这句话也非常适合学习过程。比如,我现在有大量的书籍,我需要快速的浏览这些书籍,并且从中找到那些对我有意义的内容。每个人喜欢的风格内容不尽相同,对这个人有用的书对另一个人很可能没有用。所以,每个人都需要选择适合自己的书。
关于机器学习的书籍有很多,Real World Machine Learning 就是其中一本。令人遗憾的是,机器学习这个领域太新了,大多与之相关的书籍今年才陆续出版。现在,你也可以预定 Deep Learning: A Practitioners Approach 或者 Hands-on Machine Learning with Scikit-Learn and Tensorflow 这两本书了。
但是,你也不用去等待新书的出版,在这里我向你推荐一个读书平台 Safari Books Online,费用是一个月四十美元。只要你想看,你可以在这个平台上阅读各种各样的书籍,包括部分未正式出版的书籍。当然,刚刚提到的两本书也可以通过 Safari Books Online 看到。
我会帮助你节约一些时间。目前这个阶段,你不需要学习如何使用 Python、R或者 Java,从头开始构建深度学习系统。你需要的,是那些能快速帮你进入比赛状态的工具。
Kears 将是一个很好的帮手,它的构建基础要么是 TensorFLow,要么是 Theano。
你甚至不需要自己去设置使用环境,你只需要使用它所提供的Docker镜像即可。
坦率的说,现阶段你不必去关心 Keras 后端用的是 TensorFlow 还是 Theano。TensorFlow 和 Theano 都是运行深度学习算法的基本引擎。在目前的学习阶段,它们两个对你来说都是一样的,选哪一个都可以。
Keras 是由一流的谷歌研究员创建的深度学习框架。我有幸在本周末遇见了Keras 的开发者 Francois Chollet。他说:“目前,深度学习是成熟的,只是没有得到广泛的传播。而 Keras 恰巧在其传播过程中起到了关键的作用,帮助深度学习为大众所接受。任何人不必成为 AI 研究专员,就能使用 Keras。”此时此刻,你就可以开始使用各种先进的深度学习算法。
如果你已经拥有一个 Mac 或者 Linux 主机,并且配备良好的 Nvidia 显卡,那么就开始行动吧。如果你没有,那么可以考虑购买一个 Alienware,我推荐中档的 Aurora 系列。还有,你并不需要 kick-ass 处理器。你需要一个 SSD、辅助旋转盘、内存介于16-64GB之间的存储器以及你能负担的起的性能最好的 Nvidia 显卡。记住,显卡是最重要的,必须买好的显卡,因为它可以实实在在地帮你提升深度学习的速度。你需要重新格式化显卡,使其与 Linux 系统兼容。同时,显卡必须配备最新的二进制驱动程序。遗憾的是,开源的系统不会兼容最新的芯片组,一启动很可能就会黑屏。所以,你要参考这个网站来修复它:
http://askubuntu.com/questions/760934/graphics-issues-after-while-installing-ubuntu-16-04-16-10-with-nvidia-graphics
如果你想自己 DIY 一个机组,你可以点击这里获取相关的教程:
https://medium.com/@acrosson/building-a-deep-learning-box-d17d97e2905c#.j698c3ake
https://www.analyticsvidhya.com/blog/2016/11/building-a-machine-learning-deep-learning-workstation-for-under-5000/
最后,你也可以使用 AWS、Google 云或者 Azure 云,但是云计算中的 GPU 计算可能会非常昂贵。当然在你想明白自己要做什么之前,租一个机组比购买一个机组来的更加划算。
不断实践
现在,你可以开始学习了。以下是一个非常简单的Keras实例:
http://machinelearningmastery.com/tutorial-first-neural-network-python-keras/
你需要选择一个方法来参加竞赛。我再来教你一些模型来节约时间。
目前,标记和研究图像的最有效的方法是卷积神经网络(CNN)。Google、Facebook、Pinterest 和 Amazon 都用这个方法来进行图片处理和标记。你也需要从最好的实践开始,对吧?
事实上,如果你已经朝着本次竞赛努力了的话,那么快去下载数据集并查看相关的比赛教程吧。它会告诉你如何分割图片并且使用 Keras(TensorFlow 作为后端)来构建 CNN 模型。特别棒!
坦率的说,如果没有这些教程的帮助,结果可能要糟糕的多,光是调试里边的各种参数,很可能就要花几个星期。
经历过这个疯狂的阶段之后,将各种参数和算法抛之脑后吧!尽管去尝试,尽管去寻找其中的乐趣!也许你会发现一些专家都没有发现的东西!
完成上述实验之后,如果你还想尝试更高级的东西,可以查阅 Kaggle 数据科学2017版(https://www.kaggle.com/c/data-science-bowl-2017/kernels),这里面有很多值得你学习的内容。如果在这里查不到数据科学家的相关分享,也可以参考下面这个网站:https://www.kaggle.com/anokas/data-science-bowl-2017/exploratory-data-analysis,这对数据探索也是非常有用的,里面含有一系列的匿名 CT 扫描数据。
下面这个网站里边含有比上述网站更好地教程:https://www.kaggle.com/gzuidhof/data-science-bowl-2017/full-preprocessing-tutorial,这也是目前最受欢迎的教程。它能帮助你做“预处理”,也就是最基础的数据清洗和数据整理工作,使得神经网络的处理更加容易。它实际上是把2D图像转换成了3D图像。超酷!
坦白说,如果你自己手动编写代码并让代码成功运行,这是非常不明智的选择。我们将这种编程方法称之为“硬编码”。也就是说,在完全理解代码之前,你就已经开始编写程序了。目前市面上甚至有许多与 Python 或者其他语言相关的书,都是采用“硬编码”的方法。如果你想采用“硬编码”方法,这些书可能会对你有一些帮助。
警告:已经有人在比赛中获得了完美的分数。他是通过研究棋盘游戏并增加训练数据集的数量来实现的,非常聪明。这种方法没有任何错误,但是对于最终的目标却没有实质性的帮助。我们应当利用这次比赛,学习如何运用神经网络。这种方法暂时不做介绍,我们主要专注于用 Keras 来分析 CT 扫描数据。
就这么定了!如果你运气好,说不定还可能会重新定义癌症的研究,并且把奖金带回家。还不错吧!
即使没有赢得比赛,你也学习到了如何在现实世界中使用AI技术。
无论输赢,开心是最重要的!
本文作者 Daniel Jeffries 是一位作家、工程师和企业家,研究领域涵盖了从 Linux 到虚拟化和容器的各种技术。
编译:AI100
原文链接:https://hackernoon.com/learning-ai-if-you-suck-at-math-part-two-practical-projects-47d7a1e4e21f