白话神经网络

大家端午节快乐!

学东西需要按照自己的理解方式去记录和描述!

 

一,神经网络

按照字面意思去理解,有神经再加上网络。多个神经连接起来。组成网络。

 

二,感知器

我们高中生物学习过神经元,长如下的样子:

1

那我们的神经元是怎么运作的呢?

举个例子:今天下雨你就放弃出游;

1+1 = 2,你学会了,1+2 = 3 会计算

 

1,外部刺激通过神经末梢,转化为电信号,转导到神经细胞(又叫神经元)。

2,无数神经元构成神经中枢。

3,神经中枢综合各种信号,做出判断。

4,人体根据神经中枢的指令,对外部刺激做出反应。

 

我们知道思考的基础是神经元,如何模拟思考,就能组成人工神经网络,最早的“人造神经元”模型就叫做“感知器”。

有输入,有感知器,有输出。

22

在上面的例子中,输入:x1 = 今天下雨,感知器:你的思考,输出:放弃出游

输入:x1 = 1,x2= 1,感知器:计算过程,输出:2

在现实中输入是多个的:x1,x2,x3,x4,x5........产生一个输出,好比神经末梢感受各种外部环境的变化,最后产生电信号。

在现实中我们接受到的输入是一些复杂的数据,或者说不能量化的数据,比如说:下雨,你和你女朋友吵架了,被你妈说了一顿,这些都是不能量化的数据,计算机只认识0和1。那么我们就要简化,我们约定每种输入都只有两种可能0,1。如果输入都是1,代表所有条件都成立,输出就是1;如果都是0 ,条件都不成立,输出就是0;那么如果既有0又有1呢?输出什么?

 

 

三,感知器的例子

今天天气很好,小明想去约她女朋友,但是拿不定主意。他考虑如下因素:

1,天气:天气状况?

2,女朋友状态:休息?上班?

3,约会玩什么:吃西餐?看电影?

 

这就是一个简单的感知器,上面三个因素就是外部输入,最后决定就是感知器,如果三个因素是1 ,输出就是1,如果是0,都是0。

 

四,权重和阀值

上面我们都说的是理想状态,输入全部1,输出1;输入全部0,就输出0。一些是1,一些是0,输出的是什么?这里感觉好像才猜测对方的决定。

现实中,各种因素很少具有同等的重要性;我们都知道某些因素是决定性因素,另一些因素是次要因素,所以我们可以给各个因素排个序,我们心中肯定知道那些因素重要排在第一位,我们给因素指定

一个叫权重(weight)的东西,代表他们不同的重要性。

 

1,天气:权重 6

2,女朋友状态:权重 9

3,约会玩什么:权重 4

 

如果三个因素都是1,因素乘以权重就是 6*1 + 9 * 1+ 4* 1 = 19。如果第三个因素是 0。总和就是: 6*1 + 9* 1 + 4 * 0 = 15。这个时候我们就得到一个总和。我们怎么决定这个总和?或者说那一个什么其他值来和这个总和来比较呢?

这个时候我们需要定义一个阀值(threshold)。如何我们的综合大于阀值,感知器输出1,否则输出0,假设阀值 = 8,那么19 > 8,小明决定去,阀值的高低代表了意愿的强烈。阀值越低代表总和大于阀值的可能性越大,也就是代表越想去做这件事,阀值越高就越不想去做。如果用数学表达如下:

33

x 代表各种外部因素,w表示对应因素的重要程度也就是权重。

 

五,决策模型

现实世界中,由单个的感知器构成决策模型很少,而实际的决策模型则要复杂很多,是由多个感知器组成的多层网络。

44

上图中三个层次,输入层,隐藏层,输出层。底层感知器接受外部输入,做出判断以后,再发出信号,作为上层感知器的输入,直至得到最后的结果。

 

六,矢量化

上面说过,现实世界中的很多输入是不能量化味具体数字,或者输入的数字是很大,计算机读不懂或者具体程序处理起来不太友好的输入数据,那么我们就要将输入数据矢量化,

55

然后感知器模型就变成了下面的样子。

66

七,神经网络的运作过程

一个神经网络的搭建,需要满足三个条件

1,输入和输出

2,权重 W 和阀值 b

3,多层感知器的结构

其中,最困难的部分就是确定权重w 和阀值 b,目前这两个值都是主观人为给出的,但现实中很难估计它们的值,必须有一种方法,可以找出答案。有一种方法就是试错,其他参数不表,w或者b微小变化 ▶️w和▶️b,然后去观察输出有什么变化,不断重复这个过程,直到对应最精确输出那组w和b,就是我们要的值,这个过程就是常说的模型训练过程。

77

所以神经网络的运作过程如下:

1,确定输入和输出

2,找到一种或多种算法,可以从输入得到输出

3,找到一组已知答案的数据集,用来训练模型,估算w和b

4,一旦新的数据产生,输入模型,就可以得到结果,同时对w和b进行校正

 

八,输出的数值和连续性

在上面中,我们的x*w+b 的结果是一个任意的数值,可能是89,也可能是 999等。但是我们怎么通过这些数值去决定输出的结果呢,89和 999 只能说明是一个数值,不能映射为一个具体的意义,比如如果是a值就代表 不去约会,如果是b值就去约会。所以我们现在面临的问题是把 x*w + b 的值赋予意义。那么对于计算机而言,那两个值是最好区别的呢?很明显就是0 和 1。但是存在如下情况

假如:

x*w + b = 89,output = 0。那么x*w + b = 90 呢?也许你会说 = 0啊,但是 x*w + b 的微小变化如何体现呢?

所以我们的output 不能只等于{0,1},而是 0<=output<=1 之间的的任何一个值。所以我们需要x*w + b的输出是一个连续的函数,且值域在{0,1}之间的任何值。我们做如下数学公式的计算:

令 : z = x*w + b。

然后定义:σ(z) = 1 / (1 + e^(-z)) =

88

你可以不知道这个e代表什么,但是你知道当z倾向于z → +∞,那么σ(z) → 1,如果z趋向负无穷z → -∞(表示感知器强烈不匹配),那么σ(z) → 0,也就是说,只要使用σ(z) 当作输出结果,那么输出就会变成一个连续性函数。

原来只输出0或者1这两个值

99

 

现在变成了这样子。

999

0到1 之间的连续函数。这个函数我们叫激活函数,s型的函数的值域是(0,1),简单来说,就是把(−∞, +∞)压缩到(0, 1),一个很大的负数约等于0,一个很大的正数约等于1。

一个简单的例子:

假设我们有一个神经元,激活函数就是S型函数,其参数如下:

w =[0,1]

b = 4

w=[0,1]就是一向量(有方向有数值)的形式表示w_1 = 0,w_2 = 1。现在,我们给这个神经元一个输入x = [2,3]。我们用点积来表示:

(w*x) + b = (w1 * x1 + w2 * x2) + b

= 0 * 2 + 1 * 3 + 4

= 7

y = f(w*x+b) = f(7) = 0.999

也就是说当输入[2,3]时,这个神经元的输出是0.999。给定输入,得到输出的过程被称为前馈(向前反馈)feedforward。

 

九,训练神经网络的意义

现在神经元有了,神经网络也有了,现在回到核心的问题上来,我们拿神经网络来干什么?要怎样使它做到训练的目的?

按照尝试,也就是我说了你能理解,不用看看不懂的数学公式就是,神经网络的作用就是我们预先给它大量的数据(包含输入和输出)来训练,训练完成后,我们希望它能对将来的真实环境的输入也能给出一个令我们满意的输出。

来个通熟易懂的例子:

短跑100米跑运动员,每天在训练场不同的状态和环境下训练,没跑一次都有成绩,那么跑n次,就有n组数据{x1,x2,x3,x4,x5..........Xn},根据这些数据我们能大概可以预测比如他在亚运会上的成绩。那么问题来了,根据

{x1,x2,x3,x4,x5..........Xn} 这些数据预测在亚运会上的成绩为 X= 9.55秒,这个成绩是通过{x1,x2,x3,x4,x5..........Xn}这组数据预测出来的,那么他参加亚运会肯定又个具体的现场变现成绩,我们记为Xz。问题就是 这个 X = 9.55秒和 Xz相差多少呢?

1,我们定义一个函数,来表示X和Xz之间的差距。这个函数叫损失函数或者叫代价函数Loss,Loss函数。

994

 

fi 就是神经网络通过大量数据训练后预测的结果数据,而yi 就是真实的数据结果。Loss值越大、说明神经网络的输出结果越远离我们的期望。再具象一点,其实对神经网络进行训练的目的就是为每个神经元找到最适合它的w和b的值。从而使得整个神经网络的输出不限接近我们的期望。

因为预测值主要是通过w*x+b来训练得出的,所以 预测出来的值和真实值之间的差距Loss 函数其实主要还是由W和b决定的。所以我们可以简化Loss函数,记做C,而C又只与w和b有关,可以看作是C是w和b的一个函数。

995

 

函数图形如下:

996

 

 我们的目标是找到w和b使C最小,当然上面这张图很容易看出来合适的w和b在哪,但当面对更复杂的情况时、比如下图这样的,应该如何快速地找到C最小的点呢?如何让C最小呢?这里我们引入梯度函数,

 

梯度函数

如下入:

997

 

我们要使c最小,把上图看作是一个丘陵地带,想象我们有一个球放在某个位置,让它“自然地向低处滚”,滚得越低,C就越小,我们就越高兴。也就是我们的预测值和这个是值越接近。

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值