可以使用不同的方法来连接Neural Network,就可以得到不同的结构,而将所有的weights跟bias集合起来就是这个Network的参数 。接下来我会介绍连接这些神经元(Neuron)的方法。
是最常见的一种连接方式,做法是把Neuron排成一排一排,下图中有6个Neuron,就两个两个一排,然後每一个Neuron都会根据训练资料找出一组weight跟bias。经过计算蓝色的Neuron的输出如下所示。
如果我们今天都知道一个Neural Network里面的参数,它就等於是一个function,它的输入是一个vector,输出是另外一个vector。而如果我们还不知道参数,只是决定好结构,就等於是在定义一个function set,也就是定义一个模型了。
下图为整个Network的架构,这个架构layer跟layer之间,每个Neuron两两间都有连接,因此称为全连接(Fully Connected),而这个架构是从 layer 1 到 2,2 到 3 由前往後传递,所以称为前馈网路(Feedforward Network)。
输入的地方称为Input Layer,输出的地方称为Output Layer,而其他地方我们则称为Hidden Layer。
至於几层才算Deep,每个人都有不同的定义。
我们把Neuron的function称之为Activation function,它不一定要是Sigmoid function,可以替换成其他function,现在Sigmoid function已经很少在做使用。
因此可以将整个Neural Network的运算表示成下图所示。通常会使用矩阵去运算,因为这样可以让我们使用GPU加速矩阵的运算。
我们可以把Output layer之前的部分看做是一个特徵提取器(Feature Extractor),它就可以取代我们之前在做的特徵转换(Feature transformation),所以在最後一个Hidden layer的输出就可以当作我们新的Feature。
而Output layer就是一个Multi-calss的分类器(Classifier),所以我们会在最後一个Layer加上Softmax。
假设输入是一个解析度 的图片,总共有256个pixel,对机器来说它就是一个256维的vector,每一个pixel对应到一个维度,可以假设有涂黑的地方就是 1,没有涂黑的就是 0。而输出代表了一个机率分布(Probability Distribution),总共有10维,就可以看成是输出对应到每一个数字的机率。
而整个辨识手写数字的架构就如下图所示,你需要自己决定你的Layer跟Neuron数量。
假设有一张图片跟它的Label,我们就可以知道它的目标vector,而我们将那张图片当作输入,得出一个结果,接着就跟之前我们在做Multi-calss Classification一样,去计算预测跟实际的交叉熵(Cross entropy),那我们就是要让Cross entropy越小越好。
於是我们将每一笔训练资料的Cross entropy加起来,就会得到Total Loss,所以我们就是要找一个function让Loss最小,或是找一组参数可以让Loss最小。
梯度下降法在前面几篇文章都有介绍过,这边就不再赘述。
<<: 实用的 each_cons 方法,Ruby 30 天刷题修行篇第十二话
第一次发言, 请各路大神关照. 公司需要定期作资料库备份, 备份用的电脑OS为Win 7及Win 1...
大家好,我是YIYI,今天我要来检讨一下目前的问题~ 问题 第一个部分是页面,我认为可以再增加一些页...
结语: 嗨大家,这30天的铁人赛就在今天要画上结尾了。今天就来跟各位聊聊这30天挑战的一些想法跟可以...
若是您选择以软件包或 Docker 这种 On Premises 的安装方式安装在本机电脑的话,那首...
非监督式学习 K-means 分群 今日学习目标 非监督式学习 何谓非监督式学习? 集群分析? 分群...