吴恩达机器学习课程笔记二

news2025/7/22 21:40:28

文章目录

  • 神经网络基础知识
  • 神经网络前向传播
    • 伪代码
    • 前向传播中单个神经元的作用
  • 矩阵加速运算
  • 训练模型的细节
  • 常用激活函数
    • ReLU
    • Sigmoid
    • Linear activation function
    • tanh
  • 选择激活函数
    • 选择`输出层`的激活函数
    • 选择`隐藏层`的激活函数
  • 为什么需要非线性激活函数
  • Softmax激活函数
  • 多标签分类问题
  • 梯度下降更好训练神经网络的方式-Adam

神经网络基础知识

neuron:神经元

activation:激活

layer:层(一组神经元)

hidden layer :隐藏层

output layer :输出层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-B6xNWQeC-1668776797135)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030200606871.png)]

数据量增大时,传统机器学习、小型神经网络、中型神经网络、大型神经网络的的性能变化,在大数据的今天一定要学深度学习

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IVDsGs2F-1668776797136)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205121498.png)]

神经网络一层(layer)由一个或者多个神经元构成

每一层的输出值也称为激活值(activate)

第一层的输入特征也被称为输入层

最后一层为输出层

在构建大型神经网络时,我们不可能手动将特征连接到神经元,一般是下图这样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ycs31yqt-1668776797136)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205634191.png)]

也可以是下图这样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GmGJRUDQ-1668776797137)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221030205709867.png)]

中间的这一层三个神经元的也被称为隐藏层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XBdEeWim-1668776797138)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221031220900845.png)]

通常说几层神经网络时,包括最后一层输出层,但是不包括第0层输入层

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BkZvA9DJ-1668776797138)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221031221619137.png)]

第i层的输出的激活值写做 a [ i ] a^{[i]} a[i]

所以上图中layer 4省略的为: a 2 [ 3 ] = g ( w [ 3 ] ∗ a [ 2 ] + b [ 3 ] ) a^{[3]}_2=g(w^{[3]}*a^{[2]}+b^{[3]}) a2[3]=g(w[3]a[2]+b[3])

神经网络前向传播

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1EqIJa8v-1668776881905)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107123627842.png)]

前向传播:神经元产生激活值传播给向下一层的神经元,作为下一层神经元输入值

伪代码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dq1UFJeQ-1668776881906)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107125928053.png)]

layer 1有25个神经元,layer 2有15个神经元,layer 3 有一个神经元

简化代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BF37FLoq-1668776881906)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107165406759.png)]

进一步简化代码:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2Z587Y0i-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107165451502.png)]

使用Tensorflow或者Pytorch能简便构建和训练神经网络,不过不能只会用,要弄懂这些代码在干些什么!

前向传播中单个神经元的作用

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E09VKE2z-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107171347859.png)]

上图为layer n的神经元,接受layer n-1的激活值 x 1 , x 2 , . . . , x n x_1,x_2,...,x_n x1,x2,...,xn乘于权重加上偏置 b b b,传入激活函数中,得到这个神经元的激活值 a a a

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TYSKYtS2-1668776881907)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107172138904.png)]

左侧代码为单个隐藏层的实现代码,右侧为整个四层的神经网络实现代码

矩阵加速运算

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C2BI5Zx5-1668777037837)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221107232411806.png)]

将左侧的代码中的输入数据 X X X和偏置 b b b都改为矩阵的形式,再利用矩阵相关加速运算

训练模型的细节

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pPh8UmDs-1668777061044)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221108210434373.png)]

训练模型的步骤:

1定义模型
2.定义损失函数
3.最小化损失函数

中间为手写字体识别只包含0,1,的二分类,使用sigmoid激活函数,使用二元交叉熵作为损失函数

右侧为在Tensorflow中训练这个模型的步骤

常用激活函数

ReLU

ReLU全名Rectified Linear Unit,意思是修正线性单元

ReLU函数其实是分段线性函数,把所有的负值都变为0,而正值不变,这种操作被成为单侧抑制

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PHExipQ2-1668777079785)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221108212207156.png)]

ReLU激活函数可写为: R e L U ( z ) = m a x ( 0 , z ) ReLU(z)=max(0,z) ReLU(z)=max(0,z)

Sigmoid

Sigmoid激活函数可写为: S i g m o i d ( z ) = 1 1 + e − z Sigmoid(z)=\frac{1}{1+e^{-z}} Sigmoid(z)=1+ez1

Linear activation function

线性激活函数可写为: g ( z ) = z g(z)=z g(z)=z

tanh

tanh激活函数可写为: g ( z ) = 1 − e − 2 x 1 + e − 2 x g(z)=\frac{1-e^{-2x}}{1+e^{-2x}} g(z)=1+e2x1e2x

选择激活函数

可以为神经网络中的神经元选择不同的激活函数

选择输出层的激活函数

二分类问题选择Sigmoid激活函数作为输出层的激活函数

回归问题选择线性激活函数作为输出层的激活函数

如果回归问题结果非负可以选择ReLU激活函数作为输出层的激活函数

选择输出层的激活函数时,通常根据输出的预测值 y ^ \hat{y} y^来选择

选择隐藏层的激活函数

ReLU激活函数是现在神经网络中隐藏层最常用的激活函数

为什么需要非线性激活函数

如果神经网络使用的激活函数都是线性的,那么神经网络就只是线性回归模型,神经网络无法拟合比线性回归更复杂的模型

Softmax激活函数

SoftmaxSigmoid的推广,可以进行多分类任务

Softmax 激活函数:

将输入向量的值映射到(0,1)这个区间,转化为概率的形式,且转化后向量元素和为1,公式为:
向 量 A = [ a 1 , a 2 , a 3 . . . a 4 ] T s o f t m a x ( a i ) = e a i ∑ j = 1 k e a i 例 如 : 假 设 向 量 a = [    3.2 ,    5.1 , − 5.7    ] T 经 过 函 数 运 算 后 a s o f t m a x = [    0.127 ,    0.87 ,    0.003    ] T 向量A=[a_1,a_2,a_3...a_4]^T\\ softmax(a_i)=\frac{e^{a_i}}{\sum_{j=1}^ke^{a_i}}\\\\ 例如: 假设向量a=\left[\ \ 3.2,\ \ 5.1,-5.7\ \ \right]^T\\ 经过函数运算后a_{softmax}=\left[\ \ 0.127,\ \ 0.87,\ \ 0.003\ \ \right]^T\\ A=[a1,a2,a3...a4]Tsoftmax(ai)=j=1keaieai:a=[  3.2,  5.1,5.7  ]Tasoftmax=[  0.127,  0.87,  0.003  ]T
可以看出softmax激活函数的特性:让小的值变得很小,最大的值变得更大,使得分类效果更加明显更加利于分类

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1GaYpuFA-1668777181450)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221102214524919.png)]

突出了最大值

损失函数

多标签分类问题

多标签分类,与一般的多分类问题不同,一般的多分类问题,如手写字识别,其真正的标签只有一个,而多标签分类,如下图的人、汽车、公共汽车识别,识别出的结果可能有多个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GfjAKO0k-1668777239595)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111133202680.png)]

如何解决多分类问题:以上图为例子

1.可以将其视为三个完全独立的机器学习问题,需要三个神经网络分别检测

2.训练一个神经网络同时检测这人、汽车、公共汽车

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-j9ZiEFV2-1668777239596)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111133625341.png)]

梯度下降更好训练神经网络的方式-Adam

w j = w j − α ∂ ∂ w j J ( W ⃗ , b ) w_j=w_j-\alpha\frac{\partial}{\partial w_j}J(\vec{W},b) wj=wjαwjJ(W ,b)

Adam算法,当学习率过小时可以自动增加 α \alpha α使得梯度下降的速度更快;

当学习率过大时,也可以使得学习率自动更小。

Adam算法可以自动调整学习率

Adam算法没有使用单一的全局学习率,对模型的每个参数使用不同的学习率如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W86egLy4-1668777271874)(C:\Users\98306\AppData\Roaming\Typora\typora-user-images\image-20221111141232435.png)]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Metabase学习教程:提问-2

查询编辑器中的自定义表达式 何时应该使用自定义表达式,以及为什么要在Metabase的查询编辑器中利用它们。 在数学中,表达式是符号的集合,它们一起表示一个值。如果你以前使用过电子表格软件,表达式就是公式,比如SUM&…

从安装python到使用opencv进行人脸检测

一、python与PyCharm的安装 1.python主要有三种安装方式 参考自:2、Python安装 - 哔哩哔哩 Python安装教程(2022最新)_北京精神病康复中心的博客-CSDN博客 python下载官网:Python Releases for Windows | Python.org 1&#…

EDI系统如何恢复历史映射关系?

在知行之桥EDI系统中,由XML Map端口来处理不同 XML 之间的映射关系,主要的功能为:通过鼠标拖拽建立关系映射,将输入的源XML文件转换为目标XML文件。 XML Map端口的基本设置为: 源文件:配置源XML文件的模板…

【Java篇】备战面试——你真的了解“数组”的吗?

目录 数组概念 声明数组 数组默认值 数组拷贝及数组类型VS基本类型 Arrays类 二维数组 数组概念 在JAVA语言中数组是一种数据结构,是用来存储同一类型数据的集合或者序列,我们可以通过整型下标(index,异或索引&#xf…

Centos7 docker搭建onlyoffice

注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo 一、安装docker 1、更新 yum 包(使用 root 权限,生产环境中此步操作需慎重) yum -y update yum -y update 升级所有包同时也升级软…

Set接口和常用方法

Set接口基本介绍 无序(添加和取出顺序不一样),没有索引不允许重复元素,所以最多包含一个nullSet接口的常用方法和List一样,Set接口也是Collection的子接口,因此,常用方法和Collection接口一样 …

【C++】类与对象基本知识 (构造 析构 拷贝 explicit 对象数组 动态静态对象)

目录 1.类与对象基本概念 2.构造函数 3.析构函数 4.构造和析构函数调用顺序 5.拷贝构造函数 6.浅拷贝和深拷贝 7.初始化列表 8.explicit防止构造函数隐式转换 9.对象数组 10.动态对象 10.1 动态对象创建 10.2 动态对象数组 11.静态成员 11.1 静态成员变量 11.2 …

Java学习笔记(三)

Java学习笔记(三) 文章目录Java学习笔记(三)1 常用API1.1 类 Math1.1.1 abs1.1.2 ceil和floor1.2 System1.2.1 exit()1.2.2 currentTimeMillis()1.2.3 arraycopy()1.3 Runtime1.4 Object1.4.1 System.out.println底层原理1.4.2 equalsString类重写的equals方法1.5 对象克隆1.5.…

代码随想录训练营第24天|回溯算法理论基础、LeetCode 77.组合

参考 代码随想录 回溯算法理论基础 什么是回溯算法 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。回溯法是一种选优搜索法&#xf…

基于Matlab仿真极化双基地雷达系统以估计目标的范围和速度(附源码)

目录 一、系统设置 二、系统仿真 三、使用圆极化接收阵列 四、总结 五、程序 此示例演示如何仿真极化双基地雷达系统以估计目标的范围和速度。发射器、接收器和目标运动学被考虑在内。 一、系统设置 该系统以 300 MHz 的频率运行,使用线性 FM 波形&#xff0…

1526_AURIX TC275 BootROM下

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这个是固件启动的流程介绍,在启动的过程中,HSM的RAM必然会被初始化掉。这个之前倒是没有注意到,HSM还是有专门的RAM的。自然,我自己接触到的…

基于springboot题库管理系统的设计与实现

目前,许多高校绝大多数课程还采用考教统一的模式来完成教学过程,这种传统的考试模式在教学到实施考试的过程带有很大的主观随意性和不规范性。另外随着各高校近年来学生规模的扩大,教学任务日益繁重,教师的工作量相应的不断增加。…

【Bio】基础生物学 - 蛋白质 protein

文章目录1. 蛋白质Ref1. 蛋白质 蛋白质是生命的物质基础,是有机大分子,是构成细胞的基本有机物,是生命活动的主要承担者。没有蛋白质就没有生命。 蛋白质的基本组成单位是 氨基酸 (amino acid)\blue{\text{氨基酸 (amino acid)}}氨基酸 (am…

【C++】树?堆?怎么实现?

新的一周过去了,大家有没有对上星期练习的题目更加熟练呢? 上星期和上上星期我们主要学习了顺序表,链表,和用这俩都能实现的栈和队列 那么今天我们看看堆又是什么结构 目录 1.树 介绍 2.堆 介绍 3.堆的实现 1.树の介绍 不就是树…

cartopy绘制中国降雨地图

常用的地图可视化的编程工具有 MATLAB、IDL、R、GMT、NCL 等。相比于ArcGIS、QGIS和ArcGISpro用鼠标点来点去,编程绘图也是有很大的优点的,方便,可批量,美观。 大气科学和气象的朋友们一直使用的应该是 NCL,易用性不错…

Windows 编写自动复制备份、删除文件定时任务脚本

目录 一、backup.bat 脚本内容如下: 二、脚本内容解析 1.自动生成当天日期的目录 2. 删除前 n 天的文件 forfile 命令参数说明: 3.复制文件到指定目录 robocopy 命令参数说明: 结论: 三、设置定时任务 1. 打开 控制面板…

【数据结构】谈谈ArrayList和LinkedList的区别

(此图源于比特高博) 上图简洁明了的列出了二者的不同点 下面咱们详细聊聊具体的 要问的是区别,问不同点,那就得从二者共有的但是不同的点来讨论 1.底层实现上:ArrayList底层是顺序表,采用数组结构&…

引入DDP技术:英特尔网卡让数据处理更高效

英特尔网卡引入DDP技术后,提高了云和NFV部署的数据包处理效率,按需重配置报文处理引擎,让数据处理更高效 ◆可编程报文处理流水线 ◆按需优化工作负载 ◆无需重启服务器 ◆设备使用更高效 ◆无缝启用新服务 Intel Ethernet 700系列产品…

谷粒商城项目总结(一)-基础篇

一、项目简介 本项目适合人群:学过ssm是必须的。项目里有mybatis-plus和springcloud的内容,你可以用本项目来做实践,也可以利用本项目初识cloud,但最好还是对微服务有一定了解。 下好了vargant,如果安装centos7很慢&…

是什么让 NFT 项目成为“蓝筹”?

Nov. 2022, Vincy Data Source: Footprint Analytics - Bluechip Collection 在 NFT 这样一个不稳定和新兴的行业中,要赋予项目为 "蓝筹 " 地位是很难的。然而,不少的 NFT 项目宣称自己是蓝筹项目,但它们是吗? Foot…