深度学习
这几天实验室招新,断断续续也学了差不多两周。
记录下来,以后再看肯定会是有很多错误。
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影响因素。
怎么得到w和b?给他数据自己学习。
一开始的w和b都是不好的,然后预测结束后,根据你预测的结果和真实的结果对比,进而调整你的w和b,使他达到一个好的效果,然后就得到了一个好的模型,就可以预测你想要预测的地方的房价了。
怎么调整,就好像一块山地,你要下山到最低点,每一步都走最陡峭的地方,当然这样可能会走到一个盆地,实现的时候可以调整,但整体是这样的。
定义模型
就像是上面的\(\hat{y}\)
训练模型
多次 预测数据,调整参数,来达到我们想要的理想模型。
损失函数
衡量预测数据与真实数据的误差。
优化算法
选择怎么“下山”,怎么调整参数。可以让下山的步伐变大变小。调整步伐的参数叫学习率。
预测模型
带入数据到模型种
softmax
一张图片怎么学习,把他们的每一个像素离散开来,展开成一行数字。
又引入了一个问题,给你一个2*2的图片,让你判断是猫还是狗。
还是四个特征值x1,x2,x3,x4,叫做输入层。
输出层有两个o1,o2,分别代表猫狗。
模型还是那样。
预测值越大越有可能是那种动物,但我想得到概率,进行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的来的。
LSTM
引入了门控制单元和记忆细胞,更加灵活。
能够通过门的控制长期的记忆和短期的记忆。
后记
哈哈,还是太多细节了,单单这么记录还是说不清,以后再开吧。