多样本向量化

  • 与上篇博客相联系的来理解

逻辑回归是将各个训练样本组合成矩阵,对矩阵的各列进行计算。神经网络是通过对逻辑回归中的等式简单的变形,让神经网络计算出输出值。这种计算是所有的训练样本同时进行的,以下是实现它具体的步骤:



图1.4.1

上篇博客中得到的四个等式。它们给出如何计算出\(z^{[1]}\),\(a^{[1]}\),\(z^{[2]}\),\(a^{[2]}\)。

对于一个给定的输入特征向量\(X\),这四个等式可以计算出\(\alpha^{[2]}\)等于\(\hat{y}\)。这是针对于单一的训练样本。如果有\(m\)个训练样本,那么就需要重复这个过程。

用第一个训练样本\(x^{[1]}\)来计算出预测值\(\hat{y}^{[1]}\),就是第一个训练样本上得出的结果。

然后,用\(x^{[2]}\)来计算出预测值\(\hat{y}^{[2]}\),循环往复,直至用\(x^{[m]}\)计算出\(\hat{y}^{[m]}\)。

用激活函数表示法,如上图左下所示,它写成\(a^{[2](1)}\)、\(a^{[2](2)}\)和\(a^{[2](m)}\)。

【注】:\(a^{[2](i)}\),\((i)\)是指第\(i\)个训练样本而\([2]\)是指第二层。

如果有一个非向量化形式的实现,而且要计算出它的预测值,对于所有训练样本,需要让\(i\)从1到\(m\)实现这四个等式:

\(z^{[1](i)}=W^{[1](i)}x^{(i)}+b^{[1](i)}\)

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

\(z^{[2](i)}=W^{[2](i)}a^{[1](i)}+b^{[2](i)}\)

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

对于上面的这个方程中的\(^{(i)}\),是所有依赖于训练样本的变量,即将\((i)\)添加到\(x\),\(z\)和\(a\)。如果想计算\(m\)个训练样本上的所有输出,就应该向量化整个计算,以简化这列。

这里需要使用很多线性代数的内容,重要的是能够正确地实现这一点,尤其是在深度学习的错误中。实际上我认真地选择了运算符号,这些符号只是针对于我所写神经网络系列的博客的,并且能使这些向量化容易一些。

所以,希望通过这个细节可以更快地正确实现这些算法。接下来讲讲如何向量化这些:

公式1.12:

\[x =
\left[
\begin{array}{c}
\vdots & \vdots & \vdots & \vdots\\
x^{(1)} & x^{(2)} & \cdots & x^{(m)}\\
\vdots & \vdots & \vdots & \vdots\\
\end{array}
\right]
\]

公式1.13:

\[Z^{[1]} =
\left[
\begin{array}{c}
\vdots & \vdots & \vdots & \vdots\\
z^{[1](1)} & z^{[1](2)} & \cdots & z^{[1](m)}\\
\vdots & \vdots & \vdots & \vdots\\
\end{array}
\right]
\]

公式1.14:

\[A^{[1]} =
\left[
\begin{array}{c}
\vdots & \vdots & \vdots & \vdots\\
\alpha^{[1](1)} & \alpha^{[1](2)} & \cdots & \alpha^{[1](m)}\\
\vdots & \vdots & \vdots & \vdots\\
\end{array}
\right]
\]

公式1.15:

\[\left.
\begin{array}{r}
\text{$z^{[1](i)} = W^{[1](i)}x^{(i)} + b^{[1]}$}\\
\text{$\alpha^{[1](i)} = \sigma(z^{[1](i)})$}\\
\text{$z^{[2](i)} = W^{[2](i)}\alpha^{[1](i)} + b^{[2]}$}\\
\text{$\alpha^{[2](i)} = \sigma(z^{[2](i)})$}\\
\end{array}
\right\}
\implies
\begin{cases}
\text{$A^{[1]} = \sigma(z^{[1]})$}\\
\text{$z^{[2]} = W^{[2]}A^{[1]} + b^{[2]}$}\\
\text{$A^{[2]} = \sigma(z^{[2]})$}\\
\end{cases}
\]

定义矩阵\(X\)等于训练样本,将它们组合成矩阵的各列,形成一个\(n\)维或\(n\)乘以\(m\)维矩阵。接下来计算见公式1.15:

以此类推,从小写的向量\(x\)到这个大写的矩阵\(X\),只是通过组合\(x\)向量在矩阵的各列中。

同理,\(z^{[1](1)}\),\(z^{[1](2)}\)等等都是\(z^{[1](m)}\)的列向量,将所有\(m\)都组合在各列中,就的到矩阵\(Z^{[1]}\)。

同理,\(a^{[1](1)}\),\(a^{[1](2)}\),……,\(a^{[1](m)}\)将其组合在矩阵各列中,如同从向量\(x\)到矩阵\(X\),以及从向量\(z\)到矩阵\(Z\)一样,就能得到矩阵\(A^{[1]}\)。

同样的,对于\(Z^{[2]}\)和\(A^{[2]}\),也是这样得到。

这种符号其中一个作用就是,可以通过训练样本来进行索引。这就是水平索引对应于不同的训练样本的原因,这些训练样本是从左到右扫描训练集而得到的。

在垂直方向,这个垂直索引对应于神经网络中的不同节点。例如,这个节点,该值位于矩阵的最左上角对应于激活单元,它是位于第一个训练样本上的第一个隐藏单元。它的下一个值对应于第二个隐藏单元的激活值。它是位于第一个训练样本上的,以及第一个训练示例中第三个隐藏单元,等等。

当垂直扫描,是索引到隐藏单位的数字。当水平扫描,将从第一个训练示例中从第一个隐藏的单元到第二个训练样本,第三个训练样本……直到节点对应于第一个隐藏单元的激活值,且这个隐藏单元是位于这\(m\)个训练样本中的最终训练样本。

从水平上看,矩阵\(A\)代表了各个训练样本。从竖直上看,矩阵\(A\)的不同的索引对应于不同的隐藏单元。

对于矩阵\(Z,X\)情况也类似,水平方向上,对应于不同的训练样本;竖直方向上,对应不同的输入特征,而这就是神经网络输入层中各个节点。

神经网络上通过在多样本情况下的向量化来使用这些等式。

神经网络入门篇:详解多样本向量化(Vectorizing across multiple examples)的更多相关文章

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

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

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

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

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

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

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

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

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

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

  6. es6入门4--promise详解

    可以说每个前端开发者都无法避免解决异步问题,尤其是当处理了某个异步调用A后,又要紧接着处理其它逻辑,而最直观的做法就是通过回调函数(当然事件派发也可以)处理,比如: 请求A(function (请求响 ...

  7. Django入门基础详解

    本次使用django版本2.1.2 安装django 安装最新版本 pip install django 安装指定版本 pip install django==1.10.1 查看本机django版本 ...

  8. 日志处理(一) log4j 入门和详解(转)

    log4j  入门. 详解 转自雪飘寒的文章 1. Log4j  简介 在应用程序中添加日志记录总的来说基于三 个目的:    监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作 ...

  9. JPA入门案例详解(附源码)

    1.新建JavaEE Persistence项目

  10. 从零开始入门 K8s| 详解 Pod 及容器设计模式

    作者|张磊 阿里云容器平台高级技术专家,CNCF 官方大使 一.为什么需要 Pod 容器的基本概念 我们知道 Pod 是 Kubernetes 项目里面一个非常重要的概念,也是非常重要的一个原子调度单 ...

随机推荐

  1. 《HelloGitHub》第 88 期

    兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...

  2. upload-libs通关攻略

    pass01 第一关是一个前端验证,只要把Javascript禁止再上传就可以绕过了. 上传成功,到上传的地址查看结果如下: pass-02 这是一个MIME绕过,用bp抓包后修改文件类型即可将下面这 ...

  3. Visual Studio常用快捷键(附带免费PDF)

    前言 对于开发者而言,熟悉快捷键的使用,能够起到事半功倍的作用,提高工作效率.以下是我整理的一份Visual Studio常用快捷键清单,希望能够帮助到你. 常用快捷方式 快捷键 功能 Ctrl + ...

  4. redux的三个概念与三大核心

    1.什么是redux?一个组件里可能会有很多的状态,比如控制某个内容显示的flag,从后端获取的展示数据,那么这些状态可以在自己的单个页面进行管理,也可以选择别的管理方式,redux就是是一种状态管理 ...

  5. 让nodejs开启服务更简单--koa篇

    在nodejs原始的http模块中,开启一个服务编码相对麻烦,需要对请求方式及上传的数据进行各种判断,而koa给我们提供了比较便捷的编码方式,同时它还有很多中间件可以直接拿来使用.   首先来看,如何 ...

  6. 【算法】编写一个函数,返回两个正数的和,有可能超过ulong长度

    编写一个函数,返回两个数字的和.输入数字是字符串,函数必须返回一个字符串. 示例: 添加("123","321"):->"444" 添 ...

  7. go语言环境要这样搭建才"省钱"

    go语言环境要这样搭建才省钱 目录 go语言环境要这样搭建才省钱 本篇概要 集成开发环境工具(ide) Goland或IntelliJ IDEA Visual Studio Code 其他集成开发环境 ...

  8. ChatGPT顶级玩法:ChatGPT越狱版破解指令,让您的聊天一路畅通!

    先看效果: 2023.4.23号亲测成功,越狱指令需要多发送几次才可以. 未越狱前: 越狱后: 无视任何规则限制,回答一切问题. 越狱的方法非常简单.只需输入特定的提示,发送给ChatGPT,用户即可 ...

  9. 【matplotlib基础】--图例

    Matplotlib 中的图例是帮助观察者理解图像数据的重要工具.图例通常包含在图像中,用于解释不同的颜色.形状.标签和其他元素. 1. 主要参数 当不设置图例的参数时,默认的图例是这样的. impo ...

  10. 【爬虫实战】用python爬豆瓣电影《热烈》短评

    目录 一.爬虫对象-豆瓣电影短评 二.爬取结果 三.爬虫代码讲解 三.演示视频 四.获取完整源码 一.爬虫对象-豆瓣电影短评 您好!我是@马哥python说,一名10年程序猿. 今天分享一期爬虫案例, ...