我爱编程

cs231n#2: neural-networks-1

2018-04-16  本文已影响0人  db24cc

agenda

简介

和之前线性分类区别, 经过矩阵运算后后面接一个激活函数(activation function)实现非线性.比如class score = W2*(max(W1xX,0)), 注意没有激活函数(这里是max), W2xW1总是等于一个矩阵W, 正式激活函数实现了非线性.

神经建模

神经网络是从生物学神经结构迁移过来的结构

神经网络结构

一般输入层不算,除了最终输出都是都是隐藏层.每一层神经元和下一层每一个神经元都有链接即为全连接层(FC).左边网络6个神经元,一共26个可学习的参数( [3 x 4] + [4 x 2] = 20 weights and 4 + 2 = 6 biases).右边网络9个神经元,41个参数(3x4 + 4 + 4x4 + 4 + 4x1 + 1)
- 表达能力
一言以蔽之:It turns out that Neural Networks with at least one hidden layer are universal approximators. 一层就可以任意的表示能力, 为什么还需要多层.这是一个经验科学, 更深的神经网络更容易训练(不是CNN).

the fact that deeper networks (with multiple hidden layers) can work better than a single-hidden-layer networks is an empirical observation, despite the fact that their representational power is equal.As an aside, in practice it is often the case that 3-layer neural networks will outperform 2-layer nets, but going even deeper (4,5,6-layer) rarely helps much more

设计神经网络结构

面对一个实际的问题,如何设计神经网络呢?
增加一层网络内的神经元个数可以增强网络的表达能力.假如我们有一个2分类的问题, 不同神经元数目拟合的函数如下:


这个链接ConvNetsJS demo.可以直观的感受出神经网络表达能力.但是过于复杂的表达能力会学习到训练数据的特有特征造成过拟合(overfiting).
这不是表示每一层内要用尽量小的网络,后面会介绍克制过拟合的手段(L2 regularization, dropout).不使用小的网络的原因是小的网络难以训练,小的网络包含很少的loss低估(local minima),所以它们难以收敛. 在小的网络中陷入bad minima也可能非常幸运参数初始化非常好进入了good minima(loss方差很小).但是大的网络最终loss的方差更小
最后通过L2 regulation控制过拟合, 系数越大去除过拟合效果越强烈.
上一篇下一篇

猜你喜欢

热点阅读