王新民 编译自 Hackernoon
量子位 出品 | 公众号 QbitAI
在当前社会,技术日新月异,一个全栈工程师不及时学习新知识,掌握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 ],