深度学习小计

深度学习

这几天实验室招新,断断续续也学了差不多两周。
记录下来,以后再看肯定会是有很多错误。
4.29:刚出了招新招录进去了。

环境配置

安装anaconda,然后在里面下载python,jupyter,各种包。

这里,anaconda,python,jupyter是工具,numpy,pytorch,matplotlib是各种包。

1.Python:编程语言。

2.PyTorch 是一个Python机器学习库

3.matplotlib 画图的包,分析数据。

4.NumPy(Numerical Python)是Python的一种开源的数值计算扩展

5.《动手学深度学习》 ,b站有号<李沐>

python

稍微看一下简单语法和一些类型就ok,对python的掌握没啥要求。
一些不会的语法,比如yield可以遇到再学。

jupyter

在conda里面启动,输入jupyter notebook

jupyter快捷键

shift+tab 得到提示,这个可能会挺有用
Esc进入命令模式(意会即可)
	- a进入上一个
	- b进入下一个
	- dd 删除本单元
	- m 本单元进入markdown模式
	- y 本单元进入代码模式
shift+enter 运行本单元,新建一个单元进入
ctrl+enter 运行本单元

pytorch

里面集成了很多深度学习的模型。
backward自动求梯度

深度学习

概念

书中引入了一个预测房价的问题,影响房价的因素只有面积和房龄,这里的y就是预测值,w1w2是两个权重,x1x2影响因素。

\[模型:\hat{y} = w_{1}x_1+w_2x_2+b \]

怎么得到w和b?给他数据自己学习。
一开始的w和b都是不好的,然后预测结束后,根据你预测的结果和真实的结果对比,进而调整你的w和b,使他达到一个好的效果,然后就得到了一个好的模型,就可以预测你想要预测的地方的房价了。
怎么调整,就好像一块山地,你要下山到最低点,每一步都走最陡峭的地方,当然这样可能会走到一个盆地,实现的时候可以调整,但整体是这样的。

定义模型

就像是上面的\(\hat{y}\)

训练模型

多次 预测数据,调整参数,来达到我们想要的理想模型。

损失函数

衡量预测数据与真实数据的误差。

优化算法

选择怎么“下山”,怎么调整参数。可以让下山的步伐变大变小。调整步伐的参数叫学习率。

预测模型

带入数据到模型种

softmax

一张图片怎么学习,把他们的每一个像素离散开来,展开成一行数字。
又引入了一个问题,给你一个2*2的图片,让你判断是猫还是狗。
还是四个特征值x1,x2,x3,x4,叫做输入层。
输出层有两个o1,o2,分别代表猫狗。
模型还是那样。

\[o_1=w_11x_1+w_12x_2+w_13x_3+w_14x_4 \]

\[o_2=w_21x_1+w_22x_2+w_23x_3+w_24x_4 \]

预测值越大越有可能是那种动物,但我想得到概率,进行softmax运算。
\(P_1=\frac{exp{o_1}}{\sum_{i=1}^{2}exp{o_i}}\)
softmax也常用于分类问题。

多层感知机

顾名思义,不单单只是输入层和输出层了。
我们中间可以加很多层。
比如输入层是3个,我们第一层编程四个节点,下一层五个,在下一层10个,最后两个,都是可以的。
但是,虽然这么多层,但是每一次都是线性变化,最后结果还是类似一层。需要引入激活函数进行非线性变化,比如relu,sigmoid。

卷积和一些模型。

卷积来提取相邻元素的特征值。

LeNet

算是最基本的CNN了。卷积层、激化层、池化层

RestNet

传统CNN随着网络层数的增加,网络会发生了退化。
而引入残差块后,网络可以达到很深,网络的效果也随之变好。

普通网络\(y=f(x)\)

残差网络:\(y=f(x)+x\)

RNN

RNN引入了隐藏状态解决了语言的时序问题,但记忆属于短期记忆,只有最近的输入对当前的输出影响大,也容易发生梯度衰减。我觉得n元语句和他差不多,只不过他太绝对了。
每一个隐藏状态都是由上一个隐藏状态和输入值x的来的。

\[H_i=w_{1i}H_{i-1}+w_{2i}X_i+bi \]

LSTM

引入了门控制单元和记忆细胞,更加灵活。
能够通过门的控制长期的记忆和短期的记忆。

后记

哈哈,还是太多细节了,单单这么记录还是说不清,以后再开吧。

posted @ 2022-04-30 19:45  ComplexPug  阅读(100)  评论(8编辑  收藏  举报