一个神经网络的输出

首先,回顾下只有一个隐藏层的简单两层神经网络结构

图1.3.1

其中,\(x\)表示输入特征,\(a\)表示每个神经元的输出,\(W\)表示特征的权重,上标表示神经网络的层数(隐藏层为1),下标表示该层的第几个神经元。这是神经网络的符号惯例,下同。

神经网络的计算

关于神经网络是怎么计算的,从之前提及的逻辑回归开始,如下图所示。用圆圈表示神经网络的计算单元,逻辑回归的计算有两个步骤,首先按步骤计算出\(z\),然后在第二步中以sigmoid函数为激活函数计算\(z\)(得出\(a\)),一个神经网络只是这样子做了好多次重复计算。

图1.3.2

回到两层的神经网络,从隐藏层的第一个神经元开始计算,如上图第一个最上面的箭头所指。从上图可以看出,输入与逻辑回归相似,这个神经元的计算与逻辑回归一样分为两步,小圆圈代表了计算的两个步骤。

第一步,计算\(z^{[1]}_1,z^{[1]}_1 = w^{[1]T}_1x + b^{[1]}_1\)。

第二步,通过激活函数计算\(a^{[1]}_1,a^{[1]}_1 = \sigma(z^{[1]}_1)\)。

隐藏层的第二个以及后面两个神经元的计算过程一样,只是注意符号表示不同,最终分别得到\(a^{[1]}_2、a^{[1]}_3、a^{[1]}_4\),详细结果见下:

\(z^{[1]}_1 = w^{[1]T}_1x + b^{[1]}_1, a^{[1]}_1 = \sigma(z^{[1]}_1)\)

\(z^{[1]}_2 = w^{[1]T}_2x + b^{[1]}_2, a^{[1]}_2 = \sigma(z^{[1]}_2)\)

\(z^{[1]}_3 = w^{[1]T}_3x + b^{[1]}_3, a^{[1]}_3 = \sigma(z^{[1]}_3)\)

\(z^{[1]}_4 = w^{[1]T}_4x + b^{[1]}_4, a^{[1]}_4 = \sigma(z^{[1]}_4)\)

向量化计算

如果执行神经网络的程序,用for循环来做这些看起来真的很低效。所以接下来要做的就是把这四个等式向量化。向量化的过程是将神经网络中的一层神经元参数纵向堆积起来,例如隐藏层中的\(w\)纵向堆积起来变成一个\((4,3)\)的矩阵,用符号\(W^{[1]}\)表示。另一个看待这个的方法是有四个逻辑回归单元,且每一个逻辑回归单元都有相对应的参数——向量\(w\),把这四个向量堆积在一起,会得出这4×3的矩阵。

因此,

公式1.8:

\(z^{[n]} = w^{[n]}x + b^{[n]}\)

公式1.9:

\(a^{[n]}=\sigma(z^{[n]})\)

详细过程见下:

公式1.10:

\[a^{[1]} =
\left[
\begin{array}{c}
a^{[1]}_{1}\\
a^{[1]}_{2}\\
a^{[1]}_{3}\\
a^{[1]}_{4}
\end{array}
\right]
= \sigma(z^{[1]})
\]

公式1.11:

\[\left[
\begin{array}{c}
z^{[1]}_{1}\\
z^{[1]}_{2}\\
z^{[1]}_{3}\\
z^{[1]}_{4}\\
\end{array}
\right]
=
\overbrace{
\left[
\begin{array}{c}
...W^{[1]T}_{1}...\\
...W^{[1]T}_{2}...\\
...W^{[1]T}_{3}...\\
...W^{[1]T}_{4}...
\end{array}
\right]
}^{W^{[1]}}
*
\overbrace{
\left[
\begin{array}{c}
x_1\\
x_2\\
x_3\\
\end{array}
\right]
}^{input}
+
\overbrace{
\left[
\begin{array}{c}
b^{[1]}_1\\
b^{[1]}_2\\
b^{[1]}_3\\
b^{[1]}_4\\
\end{array}
\right]
}^{b^{[1]}}
\]

对于神经网络的第一层,给予一个输入\(x\),得到\(a^{[1]}\),\(x\)可以表示为\(a^{[0]}\)。通过相似的衍生会发现,后一层的表示同样可以写成类似的形式,得到\(a^{[2]}\),\(\hat{y} = a^{[2]}\),具体过程见公式1.8、1.9。

图1.3.3

如上图左半部分所示为神经网络,把网络左边部分盖住先忽略,那么最后的输出单元就相当于一个逻辑回归的计算单元。当有一个包含一层隐藏层的神经网络,需要去实现以计算得到输出的是右边的四个等式,并且可以看成是一个向量化的计算过程,计算出隐藏层的四个逻辑回归单元和整个隐藏层的输出结果,如果编程实现需要的也只是这四行代码。

总结

通过本篇博客,读者应该可以能够根据给出的一个单独的输入特征向量,运用四行代码计算出一个简单神经网络的输出。接下来将了解的是如何一次能够计算出不止一个样本的神经网络输出,而是能一次性计算整个训练集的输出。

神经网络入门篇:详解计算一个神经网络的输出(Computing a Neural Network's output)的更多相关文章

  1. Scala进阶之路-Scala函数篇详解

    Scala进阶之路-Scala函数篇详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.传值调用和传名调用 /* @author :yinzhengjie Blog:http: ...

  2. 走向DBA[MSSQL篇] 详解游标

    原文:走向DBA[MSSQL篇] 详解游标 前篇回顾:上一篇虫子介绍了一些不常用的数据过滤方式,本篇详细介绍下游标. 概念 简单点说游标的作用就是存储一个结果集,并根据语法将这个结果集的数据逐条处理. ...

  3. java 日志体系(三)log4j从入门到详解

    java 日志体系(三)log4j从入门到详解 一.Log4j 简介 在应用程序中添加日志记录总的来说基于三个目的: 监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作: 跟踪代 ...

  4. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  5. (十八)整合Nacos组件,环境搭建和入门案例详解

    整合Nacos组件,环境搭建和入门案例详解 1.Nacos基础简介 1.1 关键特性 1.2 专业术语解释 1.3 Nacos生态圈 2.SpringBoot整合Nacos 2.1 新建配置 2.2 ...

  6. 详解计算miou的代码以及混淆矩阵的意义

    详解计算miou的代码以及混淆矩阵的意义 miou的定义 ''' Mean Intersection over Union(MIoU,均交并比):为语义分割的标准度量.其计算两个集合的交集和并集之比. ...

  7. PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明

    PHP函数篇详解十进制.二进制.八进制和十六进制转换函数说明 作者: 字体:[增加 减小] 类型:转载   中文字符编码研究系列第一期,PHP函数篇详解十进制.二进制.八进制和十六进制互相转换函数说明 ...

  8. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  9. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  10. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

随机推荐

  1. Yunfly 一款高效、性能优异的 node.js web 框架

    介绍 Yunfly 一款高性能 Node.js WEB 框架, 使用 Typescript 构建我们的应用. 使用 Koa2 做为 HTTP 底层框架, 使用 routing-controllers ...

  2. maxwell数据抓取工具

    前言 maxwell是一款开源MySQL数据抓取工具,可以读取MySQL的binlog,然后转换成json并输出到kafka.redis等消息队列中. bin/maxwell,用于增量抓取 bin/m ...

  3. 社区活动 | “中文 AI 微小说大赛”正式开启报名!

    ️ 我们要求每位参赛选手以 LLM (大语言模型)为工具,将 AI 的能力与选手的创作才华相结合,创造出引人入胜.感人至深或充满疯狂的微小说! 无论你是首次接触 AI 工具还是资深的从业者,我们期待在 ...

  4. jmeter:json提取一个字段的多个值,用逗号分隔

    目的:将接口响应结果中的一个字段的所有值同时提取,作为参数传给下个接口 1. 格式化接口响应结果 获取下图中所有object里面的EMP_UID 2. json提取 JSON Path express ...

  5. 《深入理解Java虚拟机》读书笔记:Class类文件的结构

    Class类文件的结构 Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟机,这些虚拟机都可以载入和执行同一种平台无关的的程序存储格式--字节码(ByteCode),从而实现了程序 ...

  6. 实在智能TARS-RPA-Agent,业界首发的产品级大模型Agent有何非凡之处?

    融合LLM的RPA进化到什么程度? AIGC如何借AI Agent落地? 像生成文本一样生成流程的ChatRPA,能够提升RPA新体验? 边探索边创建的ChatRPA,能否破解RPA与LLM融合难题? ...

  7. java与es8实战之二:实战前的准备工作

    欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 本篇概览 本篇是<java与es8实战>系 ...

  8. P4327题解

    思路 分组计算 以下图为例: ..#.. .#.. .*.. .#.. .#.#. #.#. *.*. #.#. #.X.# .X.* .X.* .X.# .#.#. #.#. *.*. #.#. . ...

  9. .NET 操作 TDengine .NET ORM

    TDengine 是国内比较流的时序库之一,支持群集并且免费,在.NET中资料比较少,这篇文章主要介绍SqlSugar ORM来操作TDengine 优点: 1.SqlSugar支持ADO.NET操作 ...

  10. API数据接口获取商品详情数据该怎么操作

    随着电商行业的快速发展,获取商品详情数据是电商应用的重要功能之一.为了提高用户的购物体验,开发者可以利用API接口获取商品详情数据,方便用户了解商品的具体信息和特点.在本文中,我们将介绍如何使用API ...