神经网络概览

凭着多年的编程经验,突然接触到了“深度学习”这块硬骨头,有点无从下手。因为,多年的编程几乎都是业务、逻辑的编程,很少遇到这样高度“数学化”的东东,可谓纯情小白一只。

好在,那些曾经奄奄一息、于悬崖边垂挂的线性代数、概率论、高数,多年以后再度重温,居然于字句中不忍怒骂:编书的老家伙们,干嘛如此惜墨如金!

好了,废话少说。深度学习,往往先从神经网络模型开始。

神经网络模型

一个三层神经网络.png

对于这样一个神经网络,其学习的几个重要点是:

1、掌握它的专业名词和相关数学符号
2、进行数学表示,即利用线性代数对其进行矩阵表示和向量表示
3、程序化,即将数学表示转化为 python 程序

第1点本文不再普及,主要进行第2点,第3点程序化的问题也暂时不提。

网络的第一层

首先把目光锁定在 layer0 到 layer1 这一层运算,其整体是 3 个未知数 x1, x2, x3 经过 4 个方程的线性运算,最终得到 4 个结果值。于是有以下矩阵表示:

layer1 线性方程的矩阵表示.png

单个节点方程

如果单看 layer1 的第一个节点(神经元),三个未知数和三个权重系数进行加权运算,得到一个加权值。这样得运算就是一个方程,表示为:

layer1 第一个节点的矩阵运算表示.png

至于为什么要转置,我猜权重系数 w 和未知数 x 在网络中的视觉上都是“竖”向排列的,因此矩阵运算中“躺着”看起来描述得不准确,故将其转置一下~

整层节点方程

将上述 1 个节点纵向扩展为 4 个节点,便能写出整个 layer1 层所有节点的整体数学表示(并使用大写 W 表示 layer1 的权重系数矩阵):

layer1 整层矩阵运算表示.png

整层节点的每一个节点,经过一个偏移量和一个激活函数处理后,就得到最终的结果。仍然用一个简练的整体的数学表示为:

激活函数处理.png

n 层神经网络

n 层神经网络的数学符号表示,只不过是上述推导的一层网络的重复迭代而已。此时能感受到单层网络的维度瞬间增加到 n 维,其数学推导如下:

n 层网络迭代.png

多层神经网络便构成了一个多层感知机,它通过输入几个变量属性,便能响应出一个结果。

k 个样本

以上是将单层网络向多层网络的维度扩张,并且用的是一个样本的 3 个属性去进行计算的。试想,如果有百万千万个样本(如有 k 个样本),每个样本携带有 m 个属性,在数学表示上是不是又变得复杂起来?

好消息是问题并没有变复杂——每一个样本的运算都经历了相同的步骤,k 个样本就是 k 次相同运算,在编程时,这只是一个 for 循环的事儿。得益于神经网络模型严谨的设计,使得维度扩张显得如此轻而易举。

个人觉得,从矩阵变换的角度理解下 k 个样本的运算,大概是这样的:
如果没有激活函数或者激活函数是一个线性函数,那么整个神经网络就相当于一个超级变换矩阵 W s,将 k 个样本进行一次线性变换,就得到了对应的最终结果 y 帽。
但深度学习中,激活函数往往都是非线性的,目的之一就是破坏这种线性变换关系,那此时神经网络相当于一个超级函数 f s,将 k 个样本进行一次非线性变换,得到了对应的最终结果 y 帽。

而我们所有后面要做的事,就是找到某种形式下的最优的这种超级函数 f s。

本图符号表示为自个儿定义的,谨防误解.png

编辑这些公式不容易,若转载请注名本作者。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • “为你,千千万万遍!”简单的七个字包含了多少情感,一个是富家子弟阿米尔,一个是贫穷的仆人哈桑,却都是喝同一个母乳...
    超级大的西瓜籽阅读 446评论 0 0
  • 青年 一个动人的字眼 归来 我仍是电梯口穿着粉色连衣裙的女孩 今夜 我突然怀念学校那座水上图书馆 一到夜里 它就变...
    拂意雪阅读 171评论 0 0
  • 文:吃货不孤独 本文原创,欢迎转载 我们公司里面有个小陈,负责我们相关的公司的各种杂项工作,也喜欢看各种鸡汤文章,...
    吃货不孤独阅读 1,212评论 15 14
  • 运动过程中发生的各种损伤。其损伤部位与运动项目以及专项技术特点有关。如体操运动员受伤部位多是腕、肩及腰部,与体操动...
    一颗梧桐树阅读 1,446评论 0 7
  • 1:感恩师父。 2:感恩芳姐。 3:感恩清莹。
    阿曼达Amanda阅读 242评论 0 0