两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享

2017 年 10 月 24 日 EGONetworks 分享经验的

在当前社会,技术日新月异,一个全栈工程师不及时学习新知识,掌握 AI 技能,再过两年就算不上“全栈”了。

产品发烧友、前端小哥 Shival Gupta 在意识到这一点后,通过两个多月的探索,掌握了基本的 AI 技能,并在 Hackernoon 上发文分享了自己的学习历程。

建立第一个神经网络

大家给初学者的建议,通常是通过吴恩达的 Coursera 课程来入门。

这样开始很好,但是我在听课时很难保持专注。不是说这个课程不好或存在其他问题,而是我真的非常讨厌专心听课。我习惯于通过实践来学习,所以为什么不这么做呢?

让我们开始动手实现神经网络吧。

我没有直接跳到神经网络,因为还需要熟悉一些基础内容。我先尝试熟悉这个领域的所有专有名词,为下一步的语言学习作铺垫。

也就是说,第一项任务不是学习,而是熟悉这个领域。

我是个用 JavaScript 和 Nodejs 做开发的前端工程师,暂时也不想转后端,于是就找到了一个叫做 nn 的简单神经网络模块,并用它来实现一个带有虚拟输入的“与”门。

我选择了这样一个问题:对于任意三个输入 X 、Y 和 Z ,输出为 X 和 Y 的“与”运算结果。

以下是实现代码:

var nn = require('nn')
var opts = {
    layers: [ 4 ],
    iterations: 300000,
    errorThresh: 0.0000005,
    activation: 'logistic',
    learningRate: 0.4,
    momentum: 0.5,
    log: 100
}
var net = nn(opts)
net.train([
    { input: [ 0,0,1 ], output: [ 0 ] },
    { input: [ 0,1,1 ], output: [ 0 ] },
    { input: [ 1,0,1 ], output: [ 0 ] },
    { input: [ 0,1,0 ], output: [ 0 ] },
    { input: [ 1,0,0 ], output: [ 0 ] },
    { input: [ 1,1,1 ], output: [ 1 ] },
    { input: [ 0,0,0 ], output: [ 0 ] }
    ])
// send it a new input to see its trained output
var output = net.send([ 1,1,0])
console.log(output); //0.9971279763719718

选择这个问题,是受一份 9 行代码构建神经网络教程的启发。

在我看来,上面的构建过程让我对接下来的学习充满了信心。当输出值为 0.9971 时,我意识到这个网络学会了如何实现一个“与”运算,并忽略无关的额外输入。

这正是机器学习的主旨。通过向计算机程序输入一组数据,并调整程序的内部参数,使它能够以从训练集观察到的误差减小方式,来得到对新问题的答案。

后来我才知道,这种方法也被称为梯度下降( gradient descent )。

开始 AI 之路

在我实现了我的第一个AI程序后,我充满信心,想知道作为一个开发人员,还可以用机器学习来做什么。

  1. 我解决了若干个关于监督学习的问题,如回归和分类。

  2. 基于非常有限的数据集,我尝试使用多变量线性回归来预测哪个团队将赢得某场给定的 IPL 电子竞技比赛,实际的预测效果很差,但是我觉得很酷。

  3. 我试用了 Google 机器学习云的一些 demo ,了解当前 AI 可以做什么。

  4. 我偶然发现了 AI Playbook ,这是一个由安德森-霍洛维茨风险基金整理的干货网站,确实是针对开发人员和创业者的最方便资源之一。

  5. 我开始在 Youtube 上观看 Siraj Rawal 的精彩视频,这是一个以深度学习和机器学习为核心的专栏。

  6. 我读了 HackerNoon 上一篇讲《硅谷》剧组怎样用 Tensorflow 做剧中那个 Not Hotdog 应用的。这是深度学习中我们最容易上手的一个例子。

  7. 我读了 Andrej Karpathy 的博客,他是特斯拉的 AI 主管。虽然我无法理解里面的一些内容,这让我很头疼,但是我发现,在多花一些时间以后,我对这些概念有了一定理解。

  8. 带着信心,我开始通过复制和粘贴来逐行实现一些深度学习教程中的代码,并在我自己的电脑上运行代码,尝试训练相关模型。很卡……因为大多数模型需要很长的训练时间,我也没有 GPU 。

渐渐地,我将编程语言从 JavaScript 转换到了 Python ,并在 Windows 机器上安装了 Tensorflow 。

正如乔布斯说过,你只能通过回溯过去理解其中的关联。

抓住 chatbot 的热潮

作为电影“ Her ”的狂热粉丝,我想构建一个聊天机器人。我设法在两个小时内学会了 Tensorflow 的使用,并将这个经历和我对用户需求的理解整理成了一篇文章。

在做这个聊天机器人之前,我对 NLP 的了解仅仅限于概念层面。

尝试了市面上众多聊天机器人之后,我发现,它们在本质上只是图形用户界面的替代品。如果在图形用户界面上操作超过两步点击,用聊天机器人的用户体验会比较好,反之,用聊天的形式就显得多余了。

开始构建聊天机器人的时候,我先给自己确定了两条原则:

  1. 聊天机器人应该说人话,也就是说它得理解自然语言。

  2. 要用聊天机器人解决图形UI中需要两步以上操作的问题。

经过分析,我选择构建一个通过自然语言命令找到正确日期的聊天机器人。比如说你可以问它“ 6 天以后是几号?”、“下个 9 月过完之后再过 5 周”之类的。

架构是这样的:

然后,我跟着网上的一份教程,用基础的 NLP 技能和基于 softmax 的神经网络,不到两小时就构建了一个查询意图分类器。

在确定了用户的意图之后,系统会对字符串进行语法分析并输入,然后返回我想要查询的日期。

说真的,并不难。如果你用 Facebook Messenger Platform 、Telegram 的 Bot Platform ,或者 api.ai 、wit.ai 、recast.ai 等等工具,可能比我还快。

在我的 AI 学习之旅中,这篇文章具有里程碑式的意义。

它让我在 Twitter 和 LinkedIn 上交到了很多朋友,他们长期深入地和我讨论 AI 技术的发展,甚至可以在我遇到困难时帮我一把。我收到了一些关于咨询项目的 Offer ,更让我开心是,开始有一些年轻的开发人员和AI初学者来问我是如何入门 AI 的。

这也促使了我写下这篇文章,希望能帮助更多的人从我的经历中得到线索,并开始他们的学习之路。

万事开头难。

一些理解

这绝不是一件简单的事。

我最开始时用的是 JavaScript ,后来突然换成 Python ,并学会如何用 Python 编程。

当我的模型在i7电脑无法训练,或是经过数小时训练,只返回一个无用结果时,我会感到烦躁。

学习 AI 的过程与学习一个 Web 框架不同。

这项技能要求你明白在微观层面计算是如何进行的,并确定最为影响输出结果的内容是代码还是数据。

AI 也不只是一个学科。这是一个总括性术语,其适用范围可从简单的回归问题到未来的杀手机器人。与其他学科一样,你可能要选择 AI 中比较热门的领域,如计算机视觉、自然语言处理,或者其他具有潜在发展空间的方向。

在和 AI 金融公司 Atlantis Capital 的 Gaurav Sharma 的交流中,他对我说:

在人工智能时代,“聪明”意味着某些完全不同的东西。我们要求人们去完成非常关键、具备创造性和有个人见解的任务,和那些需要高情感投入的工作。

对于计算机是如何突然学会自主决策的,你要为之着迷。你应该坚持的两个关键原则是耐心和求知欲。

这是一个非常漫长的旅程,很累也很刺激。

但最重要的是,所有旅程都是相同的,千里之行始于足下,想上手 AI 就开始动手吧。

原文地址:https://hackernoon.com/how-i-started-with-learning-ai-in-the-last-2-months-251d19b23597

责任编辑:刘海星


推荐阅读

关于 EGO

极客邦科技旗下的高端技术领导者社群,汇聚全国超过 400 位技术大牛,其中不乏「饿了么」、「知乎」、「同程旅游」、「新浪微博」等著名企业的 CTO 及技术 VP 。EGO 致力于组建全球最具影响力的技术领导者社交网络,联结杰出的技术领导者学习和成长。

登录查看更多
4

相关内容

【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
188+阅读 · 2019年12月28日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
82个Python机器学习代码和实践案例让你受益终生!
算法与数据结构
21+阅读 · 2018年12月26日
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
深度学习入门笔记
论智
7+阅读 · 2018年3月31日
深度学习入行门槛太低,不开心!
量子位
9+阅读 · 2017年11月20日
独家 | 两个月上手AI的学习经验(附学习资源)
THU数据派
3+阅读 · 2017年10月26日
结束创业后,我如何用两个月时间入门AI
AI前线
3+阅读 · 2017年10月2日
Arxiv
12+阅读 · 2018年9月15日
W-net: Bridged U-net for 2D Medical Image Segmentation
Arxiv
19+阅读 · 2018年7月12日
Relational Deep Reinforcement Learning
Arxiv
10+阅读 · 2018年6月28日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
8+阅读 · 2018年1月25日
VIP会员
相关VIP内容
【新书】傻瓜式入门深度学习,371页pdf
专知会员服务
188+阅读 · 2019年12月28日
【书籍】深度学习框架:PyTorch入门与实践(附代码)
专知会员服务
163+阅读 · 2019年10月28日
机器学习入门的经验与建议
专知会员服务
92+阅读 · 2019年10月10日
相关资讯
82个Python机器学习代码和实践案例让你受益终生!
算法与数据结构
21+阅读 · 2018年12月26日
Python 如何快速入门?
大数据技术
11+阅读 · 2018年4月9日
深度学习入门笔记
论智
7+阅读 · 2018年3月31日
深度学习入行门槛太低,不开心!
量子位
9+阅读 · 2017年11月20日
独家 | 两个月上手AI的学习经验(附学习资源)
THU数据派
3+阅读 · 2017年10月26日
结束创业后,我如何用两个月时间入门AI
AI前线
3+阅读 · 2017年10月2日
相关论文
Top
微信扫码咨询专知VIP会员