人工智能---深度学习从感知机到神经网络

系列文章目录

深度学习是什么



前言

在上一章中我们给大家介绍了什么是深度学习,以及深度学习与机器学习之间的关系,同时我们引出了深度学习中神经网络的概念,同时神经网络也将会是我们接下来进行深度学习学习的重要内容。从这章开始我便会带领大家真正的开始学习深度学习。


一、神经网络的组成

       神经网络其实源自生物学中人脑神经元的抽象从而建立起的模型结构。他用数学逻辑的方式模仿了人脑间神经元的结构和交互模式,也就是信息在大脑中的接受,加工,传递,保存的方式。从而使得计算机可以像人一样的学习、思考和解决问题。
       所以神经网络领域最重要的一步就是从生物神经元到机器神经元的转变和实现。
在这里插入图片描述
这就提出了我们深度学习第一站——感知机的概念。

二、什么是感知机

1.感知机的概念

        感知机(Perceptron)这一算法最早是由美国学者Frank Rosenblatt在1957年提出的。但我们今天依旧要提这么老的算法的原因是——感知机同时也是深度学习神经网络的起源算法,因此学习感知机,能够最平滑的让毫无基础的人理解神经网络的概念,也能让有一定基础的人队网络的原理理解更近一步。
       感知机描述的是一个能接收多个信号,输出一个信号的结构。这里的信号可以是数据流也可以是电流,感知机能对这样的流信号进行处理并整流成1/0信号,这样也更符号我们计算机的操作习惯。

在这里插入图片描述

2.感知机的数学表达

在这里插入图片描述
        wi分别是不同结点上的权重,w的数值越大说明这个结点的权重越大,也可以说是重要性越大,而y的输出则取决于全部输入结点的和,如果该和大于θ则输出1,反之输出0。

代码如下(示例):

3.感知机的简单应用实现

       感知机最简单的应用便是在逻辑电路领域了,比如各自门电路(与门,非门,与非门等等)的实现。

比如最简单的与门:
在这里插入图片描述
如何用感知机来实现这样的一个与门呢?
我们可以将感知机的参数设置为(w1,w2,θ)=(0.5,0.5,0.9)
将不同的X代入可得
在这里插入图片描述
输出和我们的预想一样,其实这样就是简单的实现了一个与门。所以说一个感知机的性质取决于他的Wi和θ。
       可能大家都还不清楚实现这样的一个东西有什么用?但其实计算机作为一个电器物件,他的内部逻辑全是依赖于这样的逻辑实现,而不是我们人类的自然语言交流,所以对这种逻辑的复现是我们在计算机上实现复杂的模型的第一步。
大家还可以尝试着实现更多的门电路(非门,或门……)通过调整W和θ。

4.简单感知机的代码实现


def AND_G(x1,x2):
	#	w1,w2,θ
    w1,w2,theta = 0.5,0.5,0.9
    tmp = x1*w1+x2*w2
    return 1 if tmp>theta else 0

输出结果:

print(AND_G(0,0))
print(AND_G(1,0))
print(AND_G(0,1))
print(AND_G(1,1))

'''
0
0
0
1

Process finished with exit code 0

'''

5.引入偏置的概念,让感知机更灵活

在这里插入图片描述

           想必有一定神经网络基础的同学对偏置这个词一定很熟悉,他一般被描述为b,平时我们都很理所当然的默许了他的存在,但是为什么需要这样一个配置量呢?
           只看公式上来分析,b值的引入可以决定神经元被激活的容易程度。从图形上看,因为无论是感知机还是后面复杂的神经网络,其实都能转换成坐标系的中的线性表示,用最简单的一元一次线性方程来举例,如果没有偏置b的存在,那就限制了线必须是过原点的,那使很多分类问题变得异常的困难,面对一个极其简单的问题可能需要极其复杂的权重设置,比如下图:
在这里插入图片描述

6.偏置实现

def AND_G(x1,x2):
    w1,w2,b,theta = 0.5,0.5,0.2,0.9
    tmp = x1*w1+x2*w2+b
    return 1 if tmp>theta else 0
print(AND_G(0,0))
print(AND_G(1,0))
print(AND_G(0,1))
print(AND_G(1,1))

运行结果:

0
0
0
1

Process finished with exit code 0

三、复杂感知机系统建立

           通过上面的实例大家已经掌握了简单的逻辑电路的实现方式,但一个感知机在逻辑电路上的应用是万能的吗?可以来看看下面的逻辑电路
在这里插入图片描述
这是一个异或门,其实可以通过坐标系证明通过一条直线是不可能分割0/1情况的,所以也就是说用一个感知机是无法实现这个异或门的,于是就引出了我们的多层感知机系统。

           我们现在手头实现的感知机电路有三个,分别是与门、非门和或门,那我们如何来拼搭出这样一个异或门呢?

在这里插入图片描述

让我们来理论证明一下这个电路是否可行!
在这里插入图片描述
        看来我们的实验没问题,通过多个感知机的拼搭我们确实实现了这样一个复杂逻辑电路,但我们深度学习最终是要应用到计算机上的,所以我们还要考虑一个算法可行性。

接下来就让我们来实现一下这个感知机系统。

#与门的方法我们前面已经实现,非门和或门是留给大家的任务,我这边就不给出答案了
#有问题的同学可以私信我讨论
def XOR_G(x1,x2):
    return AND_G(NAND_G(x1,x2),OR_G(x1,x2))

运行程序:

print(XOR_G(0,0))
print(XOR_G(1,0))
print(XOR_G(0,1))
print(XOR_G(1,1))

得出结果

0
1
1
0

Process finished with exit code 0

再对我们的感知机示意图进行一定的变形:
在这里插入图片描述
是不是突然感觉和我们前面提到的神经网络模型非常的像,这就是个最简易的神经网络模型。

        大家也可以试着进行更多的搭配与组合,来产生更多更有趣的判断网络,实现对一些生活中简单逻辑问题的解决。


总结

        至此我们的第一个神经网络就搭建成功了。我们从最本源的感知机讲起,通过逻辑电路的例子来一步步完善到一个初步的神经网络,但他只是对上了形状,其实感知机通过这么多年的演变,人们对他进行了越来越多的优化,也让其越来越兼备计算机科学和生物学上的特点,使机器真正的具备人工智能。

猜你喜欢

转载自blog.csdn.net/weixin_44494790/article/details/109777254