神经网络和深度学习(三) ——浅层神经网络的表示与输出

神经网络和深度学习(三)——浅层神经网络的表示与输出

(原创内容,转载请注明来源,谢谢)

一、神经网络的表示

神经网络,实质上是一些输入,经过多层神经元的处理,得到想要的输出。这里的输出,即预测的结果。

现在以logistic回归作为实例,单个神经元,实际上完成了logistic的z=wTx+b的计算以及a=1/(1+e-z)这两步的计算。

对于多层神经网络,实际上是将上一层的输出,作为下一层的输入(即作为z=wTx+b中的x),带入进行计算的。

对于神经网络的层级,每一列为一层,但是需要注意的是,输入的X不被记为层(或者说被认为是第0层),因此下图是一个双层神经网络。

其中中间的所有层(除去输入层和输出层)都是隐藏层,下图有一个隐藏层;最后一层是输出层。

另外,a表示输出,a[l]表示第l层的输出(即l+1层的输入),而下标ai表示的是第i个神经元。

因此,对于第l层,z[l]=W[l]Ta[l-1]+b[l],a[l]=δ(z[l]),l=1,2,3…n,输入层X可以看作是a[0]。

二、神经网络的输出

现在将一个神经元放大,可以看到上面说的内容,将z和a的计算合并在一个神经元中进行。

对于同一层,如果有多个神经元,则会进行多次这样的计算,且共同把结果作为下一层的输入,传给下一层进行计算。

这里详细列出每个神经元的计算结果,可以看到,在同一层中,各个元素的计算是并行的,分别去计算出各自的z、a,并且把结果整合成一个向量,作为下一层的输入变量。

这里也要运用到向量化的技术,即把输入的X、第一层的a,都分别作为一个向量进行计算,而不是对每一层再用for循环去遍历,这样加快了计算的速度,也加快最终得到结果的速度。

三、小结

本文讨论了神经网络的表示和输出,可以看到对于单次logistic回归,在神经网络中是用一个神经元来计算的。而神经网络中有多个神经元,而且有多个层级,这样保证了计算结果的正确率。

——written by linhxx 2018.02.01

原文发布于微信公众号 - 决胜机器学习(phpthinker)

原文发表时间:2018-02-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏MelonTeam专栏

ArrayList源码完全分析

导语: 这里分析的ArrayList是使用的JDK1.8里面的类,AndroidSDK里面的ArrayList基本和这个一样。 分析的方式是逐个API进行解析 ...

4489
来自专栏项勇

笔记68 | 切换fragmengt的replace和add方法笔记

1444
来自专栏Hongten

ArrayList VS Vector(ArrayList和Vector的区别)_面试的时候经常出现

1692
来自专栏刘君君

JDK8的HashMap源码学习笔记

3008
来自专栏Java Edge

AbstractList源码解析1 实现的方法2 两种内部迭代器3 两种内部类3 SubList 源码分析4 RandomAccessSubList 源码:AbstractList 作为 Lis

它实现了 List 的一些位置相关操作(比如 get,set,add,remove),是第一个实现随机访问方法的集合类,但不支持添加和替换

422
来自专栏ml

朴素贝叶斯分类器(离散型)算法实现(一)

1. 贝叶斯定理:        (1)   P(A^B) = P(A|B)P(B) = P(B|A)P(A)   由(1)得    P(A|B) = P(B|...

3437
来自专栏学海无涯

Android开发之奇怪的Fragment

说起Android中的Fragment,在使用的时候稍加注意,就会发现存在以下两种: v4包中的兼容Fragment,android.support.v4.ap...

3155
来自专栏后端之路

LinkedList源码解读

List中除了ArrayList我们最常用的就是LinkedList了。 LInkedList与ArrayList的最大区别在于元素的插入效率和随机访问效率 ...

19510
来自专栏Phoenix的Android之旅

Java 集合 Vector

List有三种实现,ArrayList, LinkedList, Vector, 它们的区别在于, ArrayList是非线程安全的, Vector则是线程安全...

662
来自专栏alexqdjay

HashMap 多线程下死循环分析及JDK8修复

1K4

扫码关注云+社区