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

100天搞定机器学习|Day1数据预处理编程

100天搞定机器学习|Day2简单线性回归分析网络

100天搞定机器学习|Day3多元线性回归机器学习

100天搞定机器学习|Day4-6 逻辑回归ide

100天搞定机器学习|Day7 K-NN函数

100天搞定机器学习|Day8 逻辑回归的数学原理学习

100天搞定机器学习|Day9-12 支持向量机设计

100天搞定机器学习|Day11 实现KNN3d

100天搞定机器学习|Day13-14 SVM的实现cdn

100天搞定机器学习|Day15 朴素贝叶斯blog

100天搞定机器学习|Day16 经过内核技巧实现SVM

100天搞定机器学习|Day17-18  神奇的逻辑回归

100天搞定机器学习|Day19-20 加州理工学院公开课:机器学习与数据挖掘

100天搞定机器学习|Day21 Beautiful Soup

100天搞定机器学习|Day22 机器为何能学习?

100天搞定机器学习|Day23-25 决策树及Python实现

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

100天搞定机器学习|Day 30-32 微积分的本质

100天搞定机器学习|Day33-34 随机森林

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

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

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

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

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

image

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

image.gif

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

image

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

咱们能够把数字进行拆解,理想情况下但愿倒数第二层的各个神经元能够分别对应上一个笔画。

image

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

image

可是如何识别圆圈呢?同理能够把它拆分红更细微的问题。

image

因而咱们但愿网络第二层的各个神经元对应这些短边,第二层就能把全部关联短边的八到十个神经元都点亮,接着就能点亮对于顶部圆圈和长竖条的神经元。

image

而后咱们看看连线的做用

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

image

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

image

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

image

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

image

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

image

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

image

可是咱们须要的是将其压缩到0-1之间

image

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

image

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

image

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

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

image

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

image

image

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

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

image

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

image

这种运算方式,很是适合编程,好比能够用Python的numpy很简单的实现。

image

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

image

相关文章
相关标签/搜索