深度学习.

目录

深度学习是什么?

神经网络

1.神经网络任务

2.神经网络的输入

3.神经网络的输出

深度学习任务

神经元

如何找一个函数?

梯度下降

Loss函数

线性函数和多层神经元


深度学习是什么?

        深度学习是机器学习的一个子集:利用多层神经网络从大量数据中进行学习。即设计一个很深的网络架构让机器自己学。深度学习本质上就是找一个函数f的过程。x通过函数f映射到y。

神经网络

1.神经网络任务

        输入的数据x,通过神经网络f 映射后,再输出y。如:

                f (                   x               )  =       y         

                f (    身高,体重,财富    )  =   寿命        

                f (      动漫人物的图片      )  =    人物名字    

                f (              “描述”             )  =    图片              

2.神经网络的输入

        一般有三种数据形式:向量、矩阵/张量、序列

        为什么说一张图片是由矩阵组成的?

        我们都知道,图片的像素点是由R、G、B三色混合组成的。假设有一张100x100像素点的图片,每个像素点有R、G、B三通道,所以一张图片就是矩阵。

        序列:是一种有序的组织方式,使事物之间有了明确的先后关系。例如:“我用的苹果”和“我吃的苹果”这两句话中的“苹果”的含义不相同。视频就是典型的序列,因为视频是由一帧一帧图片组成。不同的图片排放顺序可以构成不同的视频。

3.神经网络的输出

输出一般有以下三种类别:

1)回归任务(填空题):所谓的回归任务就是猜一个数,例如:根据以前的温度推测明天的温度大概有多高

2)分类任务(选择题):例如有A、B、C、D四个选项,在这四个选项中选一个

                                           图片:猫 / 狗                           从猫 / 狗中选一个

                                           句子:积极 / 消极                    从积极 / 消极中选一个

                                            疾病:轻度 / 中度 / 重度         从轻度 / 中度 / 重度选一个

3)生成任务(结构化)(填空题):例如ChatGpt生成文本、图片。所有的结构化输出都是用类似于分类的方式实现的。

小练习:判断每个任务的输入和输出分别是什么?

深度学习任务

分类和回归是结构化的基础。

分类时,是用数字来表示类别。

有的时候需要多个模态(模态:例如有图有数据的任务)的数据,比如图片,文字,声音都是不同的模态。

神经元

在了解了输入和输出,来谈谈神经元:

大家都说深度学习需要数据,这是为什么?因为要从数据中找到函数。那么如何从数据中找到想要的函数:

        1.定义一个函数(模型)

        2.定义一个合适的损失函数

        3.根据损失,对模型进行优化

我们自己先定义一个函数f' ,此时的函数f'和真实的函数f存在差距。我们的目标是要让f'尽可能的靠近真实函数f。定义一个合适的损失函数(loss函数),用来衡量定义的函数f'和真实函数f之间的差值有多大。根据损失(差值)对模型进行优化,通过数据一步一步更新,使得模型越来越靠近真实函数,最后得到真实函数。

如何找一个函数?

例:

小车的车速V=初速度V0 + 加速度a + 时间 t 
x(数据feature)y=2x+1+ε   (标签label)
13.1
25.1
36.9
48.7
510.8
613.5
7

怎么从前6组数据,推断出第7组数据的y值,这就需要从中总结出函数。那么该怎么总结呐?实际上就是上面说的那三步:

        1.定义一个函数:根据上述的y值,推测可能是线性模型(Linear Model),因此定义 ŷ=wx+b。这个函数就是我们的模型,ŷ是预测值,w是weight(权重),b是bias(偏差)。权重和偏差都是未知参数。

        2.定义一个合适的损失函数:

                Loss function of unknown para : L(w,b)=| ŷ -y | = | wx+b-y |

                Loss就是这些未知参数的函数

                Loss:判断我们选择的这组参数怎么样

            若不好理解,我们给定w0=3 , b0=2 , 即:ŷ=3x+2

x(数据feature)y=2x+1+ε   (标签label)ŷ=3x+2loss
13.151.9
25.182.9
36.9114.1
48.7145.3
510.8176.2
613.5206.5
74.48

把x=1,2,....,6分别带入到ŷ=3x+2,算出值,并用 | ŷ-y | 算出loss值,结果如上表。

通过前6组数据的loss值,我们可以预测x=7时的Loss值,可由  Loss:L=\frac{1}{N}\sum l 得出:

即L=(1.9+2.9+4.1+5.3+6.2+6.5) / 6 = 4.48 ,这个Loss值就衡量了w0=3,b0=2这组数字选的好不好,显然数字太大了,选取的不好。

        3.根据损失,对模型进行优化

         优化公式:       这个公式的含义是,w*,b*是让Loss最小的w,b

对于本例,L和W之间的关系如上图,优化的方法:梯度下降。

梯度下降

那么又该如何进行梯度下降:

1.

2.  

        如果导数是正的,说明左低右高,左边loss值小,右边loss值大,w要往左挪,使梯度变小。

w要挪动多少呐?

learning rate是学习率,是超参数(人为规定的,机器无法学习的)

3.

需要注意:上述L是关于w,b的函数,即L(w,b)=| ŷ -y | = | wx+b-y |

在优化过程中,对b的操作也是一样的,总结如下:

Loss函数

值得注意的是loss函数并不一定都是绝对值的形式.

上述的loss函数是MAE(Mean Absolute Error):L(w,b)=| ŷ -y |       (均绝对误差)

还有MSE(Mean Square Error):L(w,b)=|( ŷ -y )^2       (均误差)

像这样的loss函数还有很多,只要能够很好的衡量 ŷ -y 之间的差距,那就是一个好的loss函数

线性函数和多层神经元

神经元:,它背后的数学公式就是ŷ=wx+b,

一个个这样的神经元就可以组成多层神经元。

值得注意的是:这样的线性公式只能画出一条直线,即它没办法只画一条直线,把下图的三角形和正方形分开,而它又无法画出下图的圈。

线性函数也无法画出下图的分段函数,这是线性函数的缺点,而激活函数可以实现。

关于激活函数的内容,可移步(深度学习——多层神经网络-优快云博客)查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值