神经网络(Neural Networks)

神经网络:表述

1 非线性假设

我们之前学的,无论是线性回归还是逻辑回归都有这样一个缺点,即:当特征太多时,计算的负荷会非常大。

在这里插入图片描述
比如上面这个例子

当我们使用 x 1 x_1 x1 , x 2 x_2 x2 的多次项式进行预测时,我们可以应用的很好。 之前我们已经看到过,使用非线性的多项式项,能够帮助我们建立更好的分类模型。

假设我们有非常多的特征,例如大于100个变量,我们希望用这100个特征来构建一个非线性的多项式模型,结果将是数量非常惊人的特征组合,即便我们只采用两两特征的组合 ( x 1 x 2 + x 1 x 3 + x 1 x 4 + . . . + x 2 x 3 + x 2 x 4 + . . . + + x 99 x 100 ) (x_1x_2+x_1x_3+x_1x_4+...+x_2x_3+x_2x_4+...++x_{99}x_{100}) (x1x2+x1x3+x1x4+...+x2x3+x2x4+...++x99x100) ,我们也会有接近5000个组合而成的特征。这对于一般的逻辑回归来说需要计算的特征太多了。

普通的逻辑回归模型,不能有效地处理这么多的特征,这时候我们需要神经网络

神经网络逐渐兴起于二十世纪八九十年代,应用得非常广泛。但由于各种原因,在90年代的后期应用减少了。但是最近,神经网络又东山再起了。其中一个原因是:神经网络是计算量有些偏大的算法。然而大概由于近些年计算机的运行速度变快,才足以真正运行起大规模的神经网络。

2 模型表示

人们设计出了类似于神经元的神经网络,效果如下:
在这里插入图片描述
其中 x 1 x_1 x1 , x 2 x_2 x2 , x 3 x_3 x3 是输入单元(input units),我们将原始数据输入给它们。 a 1 a_1 a1 , a 2 a_2 a2 , a 3 a_3 a3 是中间单元,它们负责将数据进行处理,然后呈递到下一层。 最后是输出单元,它负责计算 h θ ( x ) h_\theta(x) hθ(x)

神经网络模型是许多逻辑单元按照不同层级组织起来的网络,每一层的输出变量都是下一层的输入变量。下图为一个3层的神经网络,第一层成为输入层(Input Layer),最后一层称为输出层(Output Layer),中间一层成为隐藏层(Hidden Layers)。我们为每一层都增加一个偏差单位(bias unit):

在这里插入图片描述
下面引入一些标记法来帮助描述模型: a i ( j ) a_i^{(j)} ai(j) 代表第 j j j 层的第 i i i 个激活单元。 θ ( j ) \theta^{(j)} θ(j) 代表从第 j j j 层映射到第 j + 1 j+1 j+1 层时的权重的矩阵,例如 θ ( 1 ) \theta^{(1)} θ(1) 代表从第一层映射到第二层的权重的矩阵。其尺寸为:以第 j + 1 j+1 j+1 层的激活单元数量为行数,以第 j j j 层的激活单元数加一为列数的矩阵。 例如:上图所示的神经网络中 θ ( 1 ) \theta^{(1)} θ(1) 的尺寸为 3*4。

对于上图所示的模型,激活单元和输出分别表达为:

在这里插入图片描述
上面进行的讨论中只是将特征矩阵中的一行(一个训练实例)喂给了神经网络,我们需要将整个训练集都喂给我们的神经网络算法来学习模型。

我们把这样从左到右的算法称为前向传播算法( FORWARD PROPAGATION )

3 直观理解

神经网络中,单层神经元(无中间层)的计算可用来表示逻辑运算,比如逻辑与(AND)、逻辑或(OR)。

举例说明:表示逻辑与(AND)运算;

下图中左半部分是神经网络的设计与output层表达式,右边上部分是sigmod函数,下半部分是真值表。

我们可以用这样的一个神经网络表示AND 函数:
在这里插入图片描述
其中 θ 0 = − 30 , θ 1 = 20 , θ 2 = 20 \theta_0=-30,\theta_1=20,\theta_2=20 θ0=30,θ1=20,θ2=20 我们的输出函数 h θ ( x ) h_\theta(x) hθ(x)即为: h Θ ( x ) = g ( − 30 + 20 x 1 + 20 x 2 ) h_{\Theta}(x)=g\left(-30+20 x_{1}+20 x_{2}\right) hΘ(x)=g(30+20x1+20x2)

g ( x ) g(x) g(x)的图像是:

在这里插入图片描述
通过运算,可以得到下表:
在这里插入图片描述
从而实现了逻辑与运算。

4 多分类

如果我们要训练一个神经网络算法来识别路人、汽车、摩托车和卡车,在输出层我们应该有4个值。例如,第一个值为1或0用于预测是否是行人,第二个值用于判断是否为汽车。

输入向量 x x x 有三个维度,两个中间层,输出层4个神经元分别用来表示4类,也就是每一个数据在输出层都会出现 [ a , b , c , d ] T [a,b,c,d]^T [a,b,c,d]T ,且 a , b , c , d a,b,c,d a,b,c,d 中仅有一个为1,表示当前类。下面是该神经网络的可能结构示例:

在这里插入图片描述
神经网络算法的输出结果为四种可能情形之一:

[ 1 0 0 0 ] , [ 0 1 0 0 ] , [ 0 0 1 0 ] , [ 0 0 0 1 ] \left[\begin{array}{l}1 \\0 \\0 \\0\end{array}\right],\left[\begin{array}{l}0 \\1 \\0 \\0\end{array}\right],\left[\begin{array}{l}0 \\0 \\1 \\0\end{array}\right],\left[\begin{array}{l}0 \\0 \\0 \\1\end{array}\right] 1000,0100,0010,0001

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值