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

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

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

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

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

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

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

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

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

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

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表示纯白,这个数字在神经网络里称作“激活值”。

这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(线性整流函数)。

100天搞定机器学习|Day35 深度学习之神经网络的结构的更多相关文章

  1. 100天搞定机器学习|day37 无公式理解反向传播算法之精髓

     100天搞定机器学习(Day1-34) 100天搞定机器学习|Day35 深度学习之神经网络的结构 100天搞定机器学习|Day36 深度学习之梯度下降算法 本篇为100天搞定机器学习之第37天,亦 ...

  2. 100天搞定机器学习|Day22 机器为什么能学习?

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

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

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

  4. 100天搞定机器学习|Day7 K-NN

    最近事情无比之多,换了工作.组队参加了一个比赛.和朋友搞了一些小项目,公号荒废许久.坚持是多么重要,又是多么艰难,目前事情都告一段落,我们继续100天搞定机器学习系列.想要继续做这个是因为,一方面在具 ...

  5. 100天搞定机器学习|Day11 实现KNN

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

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

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

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

    机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机器学习|D ...

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

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

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

    前情回顾 机器学习100天|Day1数据预处理 100天搞定机器学习|Day2简单线性回归分析 100天搞定机器学习|Day3多元线性回归 100天搞定机器学习|Day4-6 逻辑回归 100天搞定机 ...

随机推荐

  1. 计算机组成原理第五章(中央处理器CPU)

    ---恢复内容开始--- 指令周期(取指令.分析指令到执行完该指令所需的全部时间) 机器周期通常又称CPU周期 通常把一条指令周期分成若干个机器周期,每个机器周期完成一个基本操作 以主存的工作周期(存 ...

  2. nginx实战操作(常用命令及配置)

    1. nginx介绍 2. nginx常用命令 验证配置是否正确: nginx -t 查看Nginx的详细的版本号:nginx -V 查看Nginx的简洁版本号:nginx -v 启动Nginx:st ...

  3. bzoj1584 9.20考试 cleaning up 打扫卫生

    1584: [Usaco2009 Mar]Cleaning Up 打扫卫生 Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 549  Solved: 38 ...

  4. 学习2:总结# 1.while # 2.字符串格式化 # 3.运算符 # 4.编码初始

    目录 1.while循环 -- 死循环 2.字符串格式化: 3.运算符 4.编码 1.while循环 -- 死循环 while 条件: 循环体 打断死循环: break -- 终止当前循环 改变条件 ...

  5. 洛谷P3324 [SDOI2015]星际战争 题解

    题目链接: https://www.luogu.org/problemnew/show/P3324 分析: 因为本题的时间点较多,不能枚举,但发现有单调性,于是二分答案,二分使用的时间TTT 每个攻击 ...

  6. 每日一问:Android 消息机制,我有必要再讲一次!

    坚持原创日更,短平快的 Android 进阶系列,敬请直接在微信公众号搜索:nanchen,直接关注并设为星标,精彩不容错过. 我 17 年的 面试系列,曾写过一篇名为:Android 面试(五):探 ...

  7. window平台下 cmd 命令窗口的编码设置

    在WINDOWS上打开控制台界面,发现默认的编码是GBK,这样有时候写完的代码运行的时候就会出码,基于此,查阅各方资料,终于得出两种方案. 一.临时解决方案(只针对本次会话有效) 1. 打开控制台,输 ...

  8. Centos7 安装VNCserver&图形界面

    1.安装软件包. yum install tigervnc-server -y yum groups install GNOME yum groups install "Virtualiza ...

  9. idea使用技巧总结

    1.idea代码自动补全 https://jingyan.baidu.com/article/36d6ed1f62e9821bcf4883af.html 2.优化_生成main方法_sysout方法 ...

  10. python基础——字符串(string)

    字符串是 Python 中最常用的数据类型.我们可以使用引号('或")来创建字符串. 创建字符串很简单,只要为变量分配一个值即可. str1 = 'python' str2 = " ...