码仔 M 是一家公司的程序员,他和大佬 Z 两人亦师亦友。最近他们都在搞深度学习。大佬 Z 经常默默修炼,而码仔 M 就不同了,他热衷于在朋友圈集赞换取各种免费课程,就好像集得越多学得越好一样。这不他又开始了……

码仔 M 内心 OS:“嘿嘿嘿!一时集赞一时爽,一直集赞一直爽。”

码仔 M 心想:“啥时候能摆脱这种蚂蚁的命运呢?愁!”

大佬 Z 终于忍不住了,准备亲自出手教教这位小朋友。

比如,我们可以利用神经网络来做一些数据的预测。那么首先,我们希望神经网络模型可以学习到目标数据随输入数据的变化规律。比如,对于以下目标数据:

当我们要求神经网络模型拟合这些数据时,我们希望模型可以根据输入得到一条曲线,在一定程度上,它与原数据的变化规律是相同的:

这样如果我们不考虑过拟合的问题,理论上模型就能根据给予的输入,得出符合数据规律的结果。

那么神经网络模型是如何产生像上面那样的拟合曲线的?首先看一下最简单的单神经元模型:

它只有一个输入层单元,其中 x 表示输入的数据;一个隐含层单元,其中 w 是输入单元到隐含单元的权重;b 是隐含层单元的偏置;一个输出层单元,其中 w' 是隐含层到输出层的权重。

这个最简单的神经网络就是一个从 x 映射到 y 的函数,即 y = w’ σ(wx+b)。w、b 和 w' 是这个函数的参数,其中 σ 表示 sigmoid 函数。当 w=1,w'=1,b=0 的时候,这个函数的图像如下:

这就是 sigmoid 函数即 σ(x) 的形状和数学表达式。当我们改变 w、b 和 w' 这些参数的值的时候,函数的图形也会发生相应的改变。

可以尝试在保持其它参数不变的情况下,改变其中的一个参数,观察这个参数对函数图像的影响。

首先保持 w'=1, b=0 不变,改变 w 的大小,其函数图形的变化如下图所示。

从上图中可以看到,当 w>0 的时候,w 的大小控制着函数的弯曲程度。w 越大,函数曲线在 0 点附近的弯曲程度就会越大(曲线越陡)。而当 w<0 的时候,曲线发生了左右翻转。

再来看看参数 b 对曲线的影响,即保持 w=w'=1,改变 b 的大小。

可以清晰地看到,b 控制着 sigmoid 函数曲线的水平位置。b>0,函数图形往左平移;反之往右平移。

最后,来看看 w' 是如何影响函数曲线的。

不难看出,当 w' > 0 的时候,w' 控制着曲线的陡峭程度;当 w' < 0 的时候,曲线的方向发生上下颠倒。

可见,通过控制 w、w' 和 b 这 3 个参数,可以任意调节从输入 x 到输出 y 的函数形状。

但是,无论如何调节,这条曲线永远都是 S 形(包括倒 S 形)的。要想得到更加复杂的函数图像,则需要引入更多的神经元。

下面把模型做得更复杂一些,看看两个隐含层神经元会对曲线有什么影响,如下图所示。

输入信号进入网络之后就会兵分两路,一路从左侧进入第一个神经元,另一路从右侧进入第二个神经元。这两个神经元分别完成计算,并通过 w'1 和 w'2 进行加权求和得到 y。所以,输出 y 实际上就是两个神经元的叠加。这个网络仍然是一个将 x 映射到 y 的函数,函数方程为:

在这个公式中,有 w1, w2, w'1, w'2, b1, b2 这样 6 个不同的参数。它们的组合也会对曲线的形状有影响。

例如,可以取 w1=w2=w'1=w'2=1,b1=-1,b2=0,则该函数的曲线形状如下图所示。

从上图可以看到,合成的函数图形变为了一个具有两个阶梯的曲线。让我们再来看一个参数组合,w1=w2=1,b1=0,b2=-1,w'1=1,w'2=-1,则函数图形如下图所示。

通过以上的参数组合,我们合成了一个具有单一波峰的曲线。一般地,只要变换参数组合,就可以用两个隐含层神经元拟合出任意具有单峰的曲线。

那么,如果有 4 个或者 6 个甚至更多的隐含层神经元,不难想象,就可以得到具有双峰、三峰和任意多个峰的曲线,我们可以粗略地认为两个神经元可以用来逼近一个波峰(波谷)。

所以,回到最初提出的目标数据,像这样的数据或许只需要具有 10 个左右神经元的模型就可以拟合。

当然,仅仅能做到拟合还不够,在实际使用中我们要考虑泛化,要考虑过拟合情况,而这就需要更进一步的解释了。

听说从这之后,码仔 M 朋友圈里的好友们已经有好一段时间没有看到过他了......

告别集赞获取免费课程,实现 PyTorch 自给自足。

☟☟☟

实现 PyTorch 自由,任性玩转

作者:集智俱乐部

本书是一本系统介绍深度学习及开源框架 PyTorch 的入门书。全书注重实战,每章围绕一个有意思的实战案例展开,不仅循序渐进地讲解了 PyTorch 的基本使用、神经网络的搭建、卷积神经网络和循环神经网络的实现,而且全面深入地介绍了计算机视觉、自然语言处理、迁移学习,以及最新的对抗学习和深度强化学习等前沿技术。读者通过阅读本书,可以轻松入门深度学习,学会构造一个图像识别器,生成逼真的图画,让机器理解单词与文本,让机器作曲,教会机器玩游戏,还可以实现一个简单的机器翻译系统。

作者简介

集智俱乐部(Swarma Club),成立于2003年,是一个从事学术研究、享受科学乐趣的探索者团体,也是国内最早研究人工智能、复杂系统的科学社区。倡导以平等开放的态度、科学实证的精神,进行跨学科的研究与交流,力图搭建一个中国的“没有围墙的研究所”。

目前已出版著作有《科学的极致:漫谈人工智能》和《走近 2050:注意力、互联网与人工智能》,译作有《深度思考:人工智能的终点与人类创造力的起点》。

本书配套资源

免费配套导学视频

《PyTorch入门课程:火炬上的深度学习》https://www.bilibili.com/video/av50239976

付费配套视频课程

《深度学习原理与PyTorch实战》https://campus.swarma.org/gcou=421

文末畅聊

留言说说你有没有参加过免费集赞换课程的活动,集赞得来的课程你都看完了吗?或者说说你对 Pytorch 以及其他任何你了解的深度学习框架,你觉得它们怎么样?对你帮助大吗?精选留言选出 5 位获得赠书一本。活动截至 2019.8.21。

题图来源:freepik.com

推荐阅读:

7岁自学微积分,31岁获得菲尔兹奖,智商230,也曾因为玩游戏耽误学业!

安全专家十年磨一剑的独门秘笈,威力堪比《九阴真经》

8月书讯 | 像大师级程序员一样思考

☟☟☟ 更多深度学习好书

同是程序员,为什么别人可以事半功倍?相关推荐

  1. 【心情分享】自己心中的程序员和别人眼里的程序员

    推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 一.序章 我很少去写这种心情分享的文章,更多的是去分享一下技术. 还记得高中 ...

  2. 自己眼中的程序员VS别人眼中的程序员

    自己眼中的程序员 万般皆下品,唯有coding高,一行代码,掌控世界,其他的都是渣渣-. 老板眼中的程序员 廉价搬砖工,不要创新,不要多想,低下头就是干. 产品经理眼中的程序员 加班汪:随时待命,想改 ...

  3. @程序员:别人身边的小姐姐是这样来的,你能学学吗

    我是一个程序猿 喜欢上了公司新来的产品小姐姐 小姐姐人美腿长气质好 虽然上班等公交燥热的不行 但是这阻碍不了我约我的小姐姐出来玩 恰逢这个周末不用加班改代码了 我鼓起勇气打开小姐姐的聊天界面 看到小姐 ...

  4. 程序员必备注释模板---佛祖保佑

    佛祖保佑(一) /*** _ooOoo_* o8888888o* 88" . "88* (| -_- |)* O\ = /O* ____/`---'\____* .' \\| |/ ...

  5. 为什么美国的程序员工作轻松、还加班少? 公众号程序员江湖

    " 难道美国的程序员就不加班吗?他们就一天八小时工作,还想来就来,想走就走?非工作时间完全找不到人?还有什么食物饮料都免费提供? 让我来告诉你真实的情况吧,还... 真是这样的.加班文化应该 ...

  6. 程序员到项目经理:从内而外的提升不看后悔去吧

    从程序员到项目经理(一):为什么要当项目经理 "从程序员到项目经理",这个标题让我想起了很久以前一本书的名字<从Javascript到Java>.然而,从Javascr ...

  7. 程序员怎么样保证自己的程序没有BUG

    毫无疑问,程序员是善于思考问题的一族.一个程序的编写都是通过:思考.设计.编写.调试.测试以及运行这些基本的阶段. 但大部分程序员都有一个问题,就是不太愿意测试自己的代码.他们草草的调式完成以后就认为 ...

  8. 真的要做一辈子的程序员吗?来自10年程序员的心声

    经常听一些同学说:不知道下一份工作该去哪类公司做些什么,我的职场人际一团糟老板不重视我,我现在成长的非常慢所以又想跳槽了,我看不到公司的发展前景好迷茫,其实这一切的困惑都来源于没有做好职业规划或者你根 ...

  9. 程序员成长之路(转)

    什么时候才能成为一个专业程序员呢?三年还是五年工作经验?其实不用的,你马上就可以了,我没有骗你,因为专业程序员与业余程序员的区别主要在于一种态度,如果缺乏这种态度,拥有十年工作经验也还是业余的. 什么 ...

  10. 一个“程序员的自我修养”是什么?

    在<喜剧之王>中,周星驰扮演的尹天仇,一直梦想成为一名演员,而他不管是在扮演跑龙套,或者在街坊中开设演员训练班,亦或成为主角时,他对待演员的态度,始终是认真,热爱而又投入的.而那一本他随身 ...

最新文章

  1. Mac下安装Pyqt
  2. 编译php时错误make ***[libphp5.la] Error 1
  3. 哈希表的C实现(二)
  4. 数据驱动决策的10种思维方式
  5. AI:《人工智能+制造(智能制造)产业发展的现状、影响、+互联网、未来展望》演讲听课笔记
  6. pycharm 提示 ennble Code compatibility inspection(代码兼容性检查)
  7. 苏大计算机学院在哪,苏州大学和扬州大学都位于江苏,这两所大学,哪一所的实力更强?...
  8. c ++查找字符串_C ++类和对象| 查找输出程序| 套装1
  9. 昇兴集团:搭建帆软报表系统,打破数据孤岛,工作效率提升5倍
  10. 揭开发家致富的2个途径
  11. 微软前WP主管乔北峰长假回归 新岗位或将得罪不少用户
  12. ArcGIS Runtime SDK for Android 加载shp数据,中文乱码问题
  13. 基于C++的教师信息管理系统
  14. SAP FICO 第二节 LSMW导入财务科目
  15. 通信LOGO隐秘史(设备商篇)
  16. 什么是REST风格? 什么是RESTFUL?(一篇全读懂)
  17. html页面添加大于号,2.7 在 HTML5 页面中插入半角的大于号“ ” , 使用的标记符应该是( )...
  18. 【数据库学习笔记】Day03 - SQL语言基础及数据库定义功能
  19. shell脚本编程基础(上)
  20. 蒙特卡洛算法简单理解与demo

热门文章

  1. python 装饰器参数_python_如何修改装饰器中参数?
  2. mysql中数字格式化_mysql中格式化数字详解
  3. chrome 插件开发各种功能demo_Chrome 插件开发全攻略
  4. java 关闭oracle连接_Java应用中Oracle连接不关闭
  5. 7-3 逆序的三位数 (Java)
  6. 最简单的SAP云平台开发教程 - 如何开发UI5应用并运行在SAP云平台上
  7. 加速OA系统实施的四大要素
  8. 《剑指offer》-左旋转字符串
  9. 启动tomcat时jmx port被占用
  10. linux 查找清理大文件