机器学习:如何理解神经网络可以用来解决复杂的非线性函数

来源:互联网 发布:两名潜水员失踪知乎 编辑:程序博客网 时间:2024/06/06 11:47

我们知道神经网络里面有很多的层,每一层又有很多的神经元。看起来就非常复杂,似乎输入与输出都很凌乱,对它的理解也很难。那么我们可以从单个神经元入手,考虑单个神经元的输入与输出之间的关系,再扩展到整个神经网络。

这里写图片描述

从图中可以得到:

hθ(x)=g(30+20x1+20x2)

假如x1和x2的组合如下:

x1 x2 y 0 0 0 0 1 0 1 0 0 1 1 1

我们将x1和x2输入到假设函数,可以得到:
g(-30+20*0+20*0)=g(-30)≈0
g(-30+20*0+20*1)=g(-10)≈0
g(-30+20*1+20*0)=g(-10)≈0
g(-30+20*1+20*1)=g(10)≈1
事实上,这就像是一个“与”操作。

那么对于“或”操作也是类似的。“或”操作的θ可以如下选择:

hθ(x)=g(10+20x1+20x2)

g(-10+20*0+20*0)=g(-10)≈0
g(-10+20*0+20*1)=g(10)≈1
g(-10+20*1+20*0)=g(10)≈1
g(-10+20*1+20*1)=g(30)≈1
可以看到,通过选择不同的θ值,就可以变成“或”操作。

那么对于复杂一点的操作,比如“异或”操作呢?

这里写图片描述

“异或”操作使用两层神经元。通过选择如图的参数,我们可以知道:
a(2)1神经元是一个“与”操作。a(2)2神经元是一个“非与”操作。a(3)1神经元是一个“或”操作。这三者的结合就可以得到“异或”操作了。

所以,经过一个神经元,其实就是在做一种判断,像“与”,“或”这种简单的逻辑。单个神经元就可以做到了,但是对于复杂的判断,就不是一个神经元就可以搞定的。随着复杂程度的增加,神经网络也就形成了。
其实这跟数字电路还有点像。以前学习数字电路的时候,也是从简单的与非门,或门等简单的逻辑电路学起,然后复杂的逻辑都是通过简单逻辑的组合得到的。

阅读全文
0 0
原创粉丝点击