1 神经网络
个人对神经网络的一个理解:
以下图的这个结构为例:
首先第一层是我们传入的一个参数,这里我把传入的参数比作一个很复杂,很精简,很难懂数学公式。把机器比作一个人,对他提出的要求是理解这个公式,并且以后能够尽可能准确的去应用这个公式。
把第二层视作为他尝试理解这个公式的第一天,他能够理解一些,并且他试着转化为自己能够更加直观理解的方式去看这个公式(就像我现在在做的),然后第二层表示理解这层定义的第二天,依此类推,如果我们给他的层数(天数)越多,他最后可能会理解的更加准确,更好的应用,但是这会耗费很长时间,所以我根据定义的难度(特征数)和他的能力给他合理的层数(天数)让他理解,随着一层一层的推进,他就越来越能够以自己的方式进行解释,最后以正确的进行应用。
1.1 非线性假设:
面对有很多特征变量的时候,使用Logistic回归要得到一个复杂的决策边界就会出现非常多的二次项,很有可能出现过拟合并且运算量巨大。
1.2 神经元工作原理
我们大脑中的神经,Dendrite可以看作是一个Input,Axon可以看作是一个Output。那么Input和output之间的这一个部分就可以被看作为是处理信息和运算的这么一个部分。
当一个神经元想要将信息传输到另一个神经元的时候,就会一个神经元的Axon(output)传出来,传到另一个神经元的Dendrite(Input),然后同理可以再继续传递。
下图模拟了一个简单的神经元,我们将x1,x2,x3(有时可以将x0(bias unit)输入,有时不输入)输入到黄色的神经细胞进行处理,最后再进行输出。这里的函数名叫做Sigmoid (logistic)activation function。这里的θ也可以叫做weight(权重)。
而所谓的神经网络是有一组神经元所构成的。如下图我们可以看到这个神经网络一共有三层。第一层:输入层(x);第二层:隐藏层(在计算时看不见);第三次:输出层
a^(j)_i:j表示所在层,i表示项号。
θ^(j):是由第j+1层的项数作为行,第j层的项数+1作为列的权重矩阵。
神经网络与Logistic回归在最后一部分的做法很相同,都是通过最后输出的hypothesis函数的值来进行预测。不同的是他使用的特征值输入不再是x1,x2,x3,而是通过自己训练得到的a1,a2,a3。更具weight_1的不同我们可以得到不同的复查模型。
下图中,x1 XOR(或) x2表示x1或者x2; x1 XNOR x2表示Not(x1 XOR x2),即与其相反的结果。
其中XOR表示相同取0,相异取1
下图举了一个小例子 AND:
假设:
x1,x2:只能取0(假)或1(真)
y = x1ANDx2,且参数已知。
根据图下个我们可以看到,当z为4.6时,函数值为0.99非常接近于1。当z为-4.6时,函数值为0.01非常接近于0。这个就非常像我们的Logistic回归了。
然后我们分别输入不同的x1和x2的值,可以看到如右边的列表所示的结果,然后就可以用于判断结果。
可知当x1为真ANDx2为真时才有h(x)为真。
所以使用AND
OR function:
下面只要x1和x2当中有一个为真即可使得h(x)为真,所以叫OR函数
下图的例子中,只有当x1=0的时候才能使h(x)为真,即这个是NOT函数
用NXOR(表示x1与x2取值相同,即都为0或都为1)
若要构造一个XNOR我们可以进行拆分
下图先构造了 (NOT(x1))AND(NOT(x2))
再将其与x1ANDx2用OR组合,即可得到XNOT。
2 神经网络多分类问题:
2.1 神经网络损失函数:
- L:层数
- s(j):表示第j层激活项的数量
下图中左下为2分类问题;右下为多分类问题。
下图中上面的部分是Logistic回归正则化的代价函数
下面部分为神经网络的代价函数:
在逻辑回归中,我们只有一个输出变量,又称标量(scalar),也只有一个因变量y,但是在神经网络中,我们可以有很多输出变量,我们的 h θ ( x ) h_θ (x) hθ(x)是一个维度为K的向量,并且我们训练集中的因变量也是同样维度的一个向量,因此我们的代价函数会比逻辑回归更加复杂一些,为: h θ ( x )