【深度学习】第一门课 神经网络和深度学习 Week 3 浅层神经网络

devtools/2024/11/14 1:36:43/

🚀Write In Front🚀
📝个人主页:令夏二十三
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏:深度学习
💬总结:希望你看完之后,能对你有所帮助,不足请指正!共同学习交流 🖊

文章目录

3.1 神经网络概述

3.2 神经网络的表示

3.3 计算一个神经网络的输出

3.3.1 神经网络的符号惯例

3.3.2 神经网络的计算

3.4 多样本向量化

3.5 向量化实现的解释

3.6 激活函数

3.11 随机初始化


3.1 神经网络概述

本周的学习目标是实现一个神经网络,现在我们预览一下这周将要学习的内容。

上面讲了逻辑回归模型,也就是多个输入进入一个模型中,得到一个输出,由于模型中包含Sigmoid函数,因此输出为 0 或 1 。

 这样的一个模型在神经网络中只是一个节点:

 注意, [ i ] 表示第 i 层,( i ) 表示第 i  个训练样本,不能搞混了。

一个神经网络会包含很多层,其实道理跟最简单的逻辑回归模型是一样的,都是从左到右做前向传播,由特征值得到最终结果预测值,训练的话,从右往左依次求导,就可以对参数进行更新。

3.2 神经网络的表示

  • 输入层:图中最左侧的输入特征 x1、x2、x3 组成的一层称为输入层,也就是这个神经网络的输入。
  • 隐藏层:在神经网络的训练中,我们用到的训练集只包含输入层和输出层的数据,而神经网络中的的数据是看不到的,但是它们又确实存在,于是称之为隐藏层。
  • 输出层:在图中,这个神经网络只有一个 y^ 作为输出,它是由一个节点输出的,这个节点就是这个神经网络的输出层。

神经网络中,每一个输入都可以使用带上角标 [ i ] 的 a 来表示,由于上一层的节点被激活后才会有输出,于是这里的 a 表示下一层节点输入的激活值(Active Value)。

在这个示例里,输出层的每个输入特征都可以写成 a ,表示输入层的激活值,其上角标都为 [ 0 ];

在隐藏层,我们可以看到有四个节点,于是就会有四个激活值从节点输出,并输入到下一层,这里的激活值 a 的上角标都为 [ 1 ] ,在代码中,我们把这一层的激活值集合到一个列向量里,如图所示:

最后的输出层产生的数值,也就是 y^,我们将其取值为 上角标为 [ 2 ] 的激活值 a。

深度学习领域,神经网络的层数是不包含输入层的,于是我们把这个示例称为一个两层的神经网络

3.3 计算一个神经网络的输出

3.3.1 神经网络的符号惯例

  • x :输入特征
  • a :每个神经元的输出
  • W :特征的权重
  • 上标 [ i ] :神经网络的第 i 层
  • 下标 i :该层神经网络的第 i 个神经元

3.3.2 神经网络的计算

其实就跟之前提到的逻辑回归是一样的,首先计算 z,再套用 Sigmoid 函数计算出 a,一个神经网络只是这样做了好多次重复计算。

 回到前面的示例,我们有了输入后,就可以计算隐藏层的激活值:

 在代码中,我们可以利用矩阵运算(向量化)来缩短计算时间:

总而言之,在这里我们只要做下面这四个计算:

 通过这些公式,我们可以根据给出的一个单独的输入特征向量计算出一个简单神经网络的输出。

3.4 多样本向量化

神经网络训练中涉及到很多输入样本,我们需要把这些输入样本集成到一个矩阵中,这样就可以实现更加方便的计算,通过矩阵运算可以同时对所有样本进行预测值的求解,矩阵如下:

 从水平上看,矩阵代表了 m 个训练样本,从竖直上看,矩阵的不同 [ i ] 索引对应了不同的隐藏单元。

3.5 向量化实现的解释

使用上面的方法得到矩阵和向量后就可以使用先前的公式进行 z 的计算了:

矩阵乘以列向量,最终得到的是列向量,再通过向量和常数的加法,加上 b,也就得到了最终的 z。

3.6 激活函数

训练一个神经网络时,需要决定使用哪种激活函数用在隐藏层上,哪种用在输出层上。激活函数有很多,上面只提到了 Sigmoid 函数,但其实还有其他的,有时候用起来更好。

 选择激活函数的经验:

  • 对于二分类问题,输出层选择 Sigmoid 函数,然后其他的所有单元都选择 Relu 函数;
  • 如果在隐藏层上不确定使用哪个激活函数,那就用 Relu 函数。

要注意的区别:

  • 在实践中,使用 Relu 函数激活的神经网络通常比用 sigmoid 或 tanh 函数激活的学习地更快;
  • sigmoid 函数和 tanh 函数在正负饱和区的梯度都接近于0,这会造成梯度弥散,而 Relu 函数和 Leaky Relu 函数大于0部分都为常数,不会产生梯度弥散现象。

3.11 随机初始化

我们在训练神经网络的时候,权重随机初始化是很重要的,因为如果所有节点输出的权重值一样的话,同一层下的所有节点将会是一模一样的,那样设置这些节点就没有意义。


http://www.ppmy.cn/devtools/31604.html

相关文章

【Android学习】简易计算器的实现

1.项目基础目录 新增dimens.xml 用于控制全部按钮的尺寸。图片资源放在drawable中。 另外 themes.xml中原来的 <style name"Theme.Learn" parent"Theme.MaterialComponents.DayNight.DarkActionBar">变为了&#xff0c;加上后可针对button中增加图片…

docker安装nginx支持ssl 实现https访问(完整版)

全文目录,一步到位 1.前言简介1.1 专栏传送门1.1.1 本文简介 2. docker安装nginx支持ssl2.0 准备ssl证书(例: 阿里云)2.0.1 配置域名解析2.0.2 找到数字证书管理服务并签发ssl证书2.0.3 选择默认证书 填写域名 创建2.0.4 提交审核, 签发成功2.0.5 解压并上传到宿主机ssl路径下 …

文件导入导出【开发实践】

文章目录 一、背景和基础知识1.1 文件导入1.2 文件导出1.3 技术背景1.4 Excel的基本知识1.5 文件导入/导出流程 二、使用EasyExcel完成读写Excel操作2.1 创建实体类并完成映射2.1.1 用在字段上的注解2.1.1.1 ExcelProperty&#xff08;最重要&#xff09;2.1.1.2 ColumnWidth2.…

Elasticsearch:对 Java 对象的 ES|QL 查询

作者&#xff1a;Laura Trotta ES|QL 是 Elasticsearch 引入的一种新的查询语言&#xff0c;它将简化的语法与管道操作符结合起来&#xff0c;使用户能够直观地推断和操作数据。官方 Java 客户端的新版本 8.13.0 引入了对 ES|QL 查询的支持&#xff0c;提供了一个新的 API&…

云商城系统,无后门,一站式系统Java源码

云商城系统&#xff0c;无后门&#xff0c;一站式系统Java源码&#xff0c;心权益商品数量不限数量 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价功能 三方支付 会员体系 财务明细 交易分析 售后服务 技术支持 建议配置&#xf…

教程:使用JavaScript求绝对值

步骤1&#xff1a;了解绝对值的概念 绝对值指的是一个数不考虑符号的大小&#xff0c;例如&#xff0c;-5和5的绝对值都是5。 步骤2&#xff1a;准备JavaScript环境 你可以在浏览器的控制台中测试JavaScript代码&#xff0c;也可以在任何文本编辑器中编写代码&#xff0c;并…

(代码结构3)项目redis key 管理

场景:项目中到处可见的key&#xff0c;没有统一管理&#xff0c;极其难维护。大佬同事实现了一个。 代码 如图,Redis.php 是对redis的二次封装&#xff0c;对redis key模块的强制校验&#xff0c;FillerKeyTrait.php 是对filler模块的key获取。主要原理是:对redis二次封装&…

Jenkins集成Kubernetes 部署springboot项目

文章目录 准备部署的yml文件Harbor私服配置测试使用效果Jenkins远程调用参考文章 准备部署的yml文件 apiVersion: apps/v1 kind: Deployment metadata:namespace: testname: pipelinelabels:app: pipeline spec:replicas: 2selector:matchLabels:app: pipelinetemplate:metada…