专栏首页机器学习与统计学100天搞定机器学习|Day35 深度学习之神经网络的结构

100天搞定机器学习|Day35 深度学习之神经网络的结构

本文为3Blue1Brown之《What is a Neural Network?》学习笔记

观看地址:bilibili.com/video/av15532370

这集Grant大佬假设大家都没有神经网络的基础,为新手讲解神经网络基本概念,让大家再听说神经网络学习的时候,可以明白究竟是什么意思。大佬选择经典的多层感知器(MLP)结构解决手写数字识别问题,理由是理解了经典原版,才能更好地理解功能强大的变种,比如CNN和LSTM。

首先看看神经元和他们是怎么连接的

神经元可以理解为一个装着0到1之间数字的容器。以28*28输入图像每一个像素为例,每一个原点都是一个神经元,其中数字代表对于像素的灰度值,0表示纯黑,1表示纯白,这个数字在神经网络里称作“激活值”。

这784个神经元就组成了网络的第一层,最后一层的十个神经元代表0-9这十个数,同样的,他们的激活值也在0-1之间,代表了输入图像对应哪个数字的可能性。网络中间层被称为隐含层,可以看做黑箱,数字识别的具体工作就在这里完成,这里加了两层隐含层,每层有16个神经元——随便设置的,只是为了显得好看,后期还可以再调整。

神经网络处理信息的核心机制正是如此,一层的激活值通过一定的运算,得出下一层的激活值。上面也提到784个神经元代表的是数字图案,那么下一层激活值也会产生某些特殊的图案,最终在输出层最亮的神经元表示神经网络的选择。

我们再看看如何训练,为什么这种层状结构就能识别数字呢?

我们可以把数字进行拆解,理想状况下希望倒数第二层的各个神经元可以分别对应上一个笔画。

再来看隐含层第一层,当输入为9或8的上面带圈的数字时,某个神经元的激活值就会接近1,希望所有这种位于图像顶部的圆圈图案都能点亮这个神经元,这样,从第三次到输出层,我们只需要学习哪些部件能组合出哪个数字即可。

但是如何识别圆圈呢?同理可以把它拆分成更细微的问题。

于是我们希望网络第二层的各个神经元对应这些短边,第二层就能把所有关联短边的八到十个神经元都点亮,接着就能点亮对于顶部圆圈和长竖条的神经元。

然后我们看看连线的作用

如何让第二层(隐含层的第一层)中的这一个神经元能够能够识别出图像的这一块区域是否存在一条边?

我们设计让第二层的某一个神经元能正确识别图像中的这块区域里是否存在一条边。

我们拿出第一层(输入层/第0层)的激活值,并赋上权重(要关注区域的权重为正值,否则为0),这样对所有像素值求加权和,就只会累加关注区域的像素值了。

绿色为正值,红色为负值,颜色越暗表示权重越接近0

所以想要识别是否存在一条边,只需要给周围一圈的像素都赋予负权重

计算的加权值可以使任意大小的

但是我们需要的是将其压缩到0-1之间

这里就需要Sigmoid函数了,这就是激活函数。

激活值实际上就是一个对加权之和到底有多正的打分,但是有时加权之和大于0时,也不想点亮神经元,比如想要加权和大于10时才让他激发,这里就还需要加上一个偏置值,保证不随便激发。

权重告诉我们第二个神经元关注什么样的像素图案

bias告诉我们加权和要多大才能让神经元的激发有意义

这里有13000多个参数需要调整,所以这里所谓的学习就是找到正确的权重和偏置。刚开始讲到我们把神经元看作是数字容器,但是这些数字取决于输入的图像,所以把神经元看过一个函数才更准确,它的输入是上一层所有神经元的输出,它的输出是一个0-1之间的值。其实整个神经网络也是一个函数,输入784个值,输出10个值。不过它是一个包含了13000个权重、偏置参数的极其复杂的函数。

需要注意的是,机器学习尤其是神经网络运算与线性代数是密不可分的,之前有过介绍,请移步:

100天搞定机器学习|Day26-29 线性代数的本质

神经网络中需要大量的矩阵乘法和sigmoid映射运算

这种运算方式,非常适合编程,比如可以用Python的numpy很简单的实现。

最后需要一提的是,现在神经网络基本不再使用sigmoid了,比较流行的是ReLU(线性整流函数)。

end

100天搞定机器学习|Day36,我们将进行下一节,讲一下神经网络是如何通过数据来获得合适的权重和偏置的,敬请期待!

本文分享自微信公众号 - 机器学习与统计学(tjxj666)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-31

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 你真的了解病毒分析吗?反病毒专家深度揭密

    已经有不少朋友从后台咨询我怎么学习恶意样本分析?有做渗透测试的,有做大数据分析的,还有做应急响应、安全服务的,一直想给大家写一篇关于如何学习入门恶意样本分析以及...

    FB客服
  • VBA 12306火车票查询系统V1.0

    MsgBox "不允许搜索之前的车次!", vbExclamation, "VB小源码"

    巴西_prince
  • ScaledInference:关于机器学习优化的类比

    作为成长型营销人员是非常激动人心的,机器学习是一个我们可以利用的强大的新工具。您可能已经听过很多关于人工智能,机器学习甚至强化学习的知识。但是,您可能没有太多渠...

    AiTechYun
  • 陈天奇:机器学习科研的十年

    十年前,MSRA的夏天,刚开始尝试机器学习研究的我面对科研巨大的不确定性,感到最多的是困惑和迷茫。十年之后,即将跨出下一步的时候,未来依然是如此不确定,但是期待...

    量子位
  • AI新人必看 | 参数和超参数还分不清楚吗?

    计算机学科里有太多的术语,而且许多术语的使用并不一致。哪怕是相同的术语,不同学科的人理解一定有所不同。

    用户2769421
  • 随机森林:这或许是集成学习中最经典的一个 Bagging 算法了

    在 集成学习概述 中已经知道了常用的集成算法有两种:Bagging 和 Boosting。而在 Bagging 中,随机森林(Random Forest,RF)...

    1480
  • 人类历史上第一个可编程忆阻器计算机诞生!

    你有没有想过,智能手机将来也有可能直接处理复杂的人工智能任务?关键在它:人类历史上,第一个可编程忆阻器计算机。

    新智元
  • 深度学习模型大合集:GitHub 趋势榜第一,已斩获 8000+ 星

    最近,威斯康辛大学麦迪逊分校统计学助理教授、机器学习和深度学习研究者 Sabastian Raschka 在 GitHub 上创建了一个项目,包含大量深度学习架...

    小小詹同学
  • 决策树学习笔记(三):CART算法,决策树总结

    推荐导读:本篇为树模型系列第三篇,旨在从最简单的决策树开始学习,循序渐进,最后理解并掌握复杂模型GBDT,Xgboost,为要想要深入了解机器学习算法和参加数据...

    用户2769421
  • 机器学习实践的10个小秘诀

    导读:对于开发人员而言,基于云的机器学习工具带来了使用机器学习创造和提供新的功能的可能性。然而,开发者想要在它们的应用程序中融入机器学习,通常会犯一些错误,本文...

    用户2769421

扫码关注云+社区

领取腾讯云代金券