【深度学习保姆级教学】草履虫都能看懂!理论到实战、入门到起飞!人工智能基础入门必
理论部分完结版全集笔记!包含网址,重要课件截屏,理解,精华弹幕。
为什么所有笔记都是前三课😂让我来续写👻

一般只玩小数据集,因为配置。

k近邻做图形分类的缺点:不知道什么是背景,什么是主体。
接下来神经网络的各个小部分:


一张图像中有3072个像素点,不同位置像素点的重要程度不同,所以每一个像素点对应一个权重,x就是像素矩阵,w就是权重矩阵,矩阵相乘得到一个数字。不同的类别,对于不同位置的像素重要程度也不同,所以每一个类别有一个权重矩阵。分别相乘,即可得到对应每一个类别的一个得分。把不同类的权重矩阵合在一起得到W矩阵。f即为这张图像对应多个类别的得分。b偏置参数起到微调的作用,对不同类别进行微调。
W最开始的时候是随机数,然后深度学习要做的就是找到最合适的W.

损失函数就是用来描述当前W值进行分类,结果的好坏程度,可以定义不同的损失函数。比如上图这个损失函数,图中加1是为了有区分度,比如一张猫猫图,分类结果的得分车3.18 猫3.2虽然分对了,但其实说明分的不是很好(类似于选择题纠结之后选对),所以损失函数应该表现出这种不好,而不是因为<0而表现不出来。损失函数越大,表示分类效果越不好。
损失值相同的情况下,如何判断模型的优良?

上图中,第二个更好,因为第一个只考虑了局部,会导致过拟合
加入正则化惩罚项:只考虑w矩阵的数值,不考虑数据。

“λ”是一个惩罚系数。
如何将得分值,变为概率值:
softmax分类器:

为什么要用e的x次呢?将差距扩大,比如上图的3.2和5.1之间的差距较小,但是经过e的x次后,两者的差距将变大
得到概率值后如何得到损失值?
只看正确分类的概率p,-log(p)

如何根据损失值来反向更新w
多层:eg:背景不重要-->看胡须-->看眼睛


梯度下降---非常生动具体的例子:
链式法则,梯度是一步一步传的。

逐层之间求导:求出一层导函数,把自变量代入,乘以上层传下来的梯度
可以整体一大块儿计算

技巧


这个老师建议不用看生物学的类比部分

上图是一张特别特别重要的图:
hidden layer1: 将较少的三个特征,转化为较多个特征(这个中间结果,对人类无意义,对计算机相对有意义)
层与层之间的箭头,就是我们所学的w

上图指明了矩阵的维度
能否将多层化为一层,将权重矩阵乘在一起?
不能,因为每一层后都会用一次非线性函数

神经网络的参数越多越好吗?
神经元个数越多越好吗?
越多越慢越容易过拟合
网址:hthttp://cs.stanford.edu/people/karpathy/convnetjs/demo/classify2d.html
神经元的个数,就像切刀次数,
一神经元(切一刀):

两神经元(切两刀):

三神经元(切三刀):

过拟合现象:比如下图圈主的绿色,更可能是异常点,本应是红色。

每加一个神经元,其实都是增加了一组神经元(比如每一个像素点都要对应一个参数)
惩罚力度对分类的影响:
力度下,容易过拟合,某些w过高

力度大,
评价神经网络的好坏:看测试集,而不是训练集。

参数个数对结果的影响:

激活函数对比:

sigmod的缺点:
靠两边时候,梯度约等于0,梯度消失,无法传递
ReLu:现在最常用的,
数据预处理:
标准化:

参数初始化:
也很重要!!w矩阵的随机值赋值方式
注意初始化时候,w的值应该较小

过拟合问题的缓解:
正则化
drop-out:
互相伤害。

妙哉,随机选择(可以设定选择的比例,比如50%)几个神经元不去迭代
测试阶段就是正常测试,不存在杀死。
-------------------------------------------------------
总结,首先有x然后预处理,得到输入层,通过随机初始化的权重参数矩阵w,得到隐藏层,可以有很多层隐藏层,每层隐藏层后需要一个激活函数(常用relu).
得到输出后,求出损失值,前向传播,逐层求偏导(relu也需要)得到新的w。
百分之99的神经网络都会过拟合,对此有很多解决方案,比如:drop-out,正则化
计算机视觉
神经网络
卷积神经网络
超分辨率重构
医学任务
ocr
无人驾驶
人脸识别
的简单介绍
与传统网络的区别,维度

整体架构


绿色的叫特征图feature map,蓝色的小数是w(f即卷积核)
三个通道分别计算后相加得到结果
生动的例子:
卷积核filter
内积

各个通道内积,三通道加起来
红色和粉色分别对应f1,f2,绿色表示对应的两种特征图,每一个绿色格子,表示经过移动后算出的一个数字。

f可以有多个,f1,f2,f3...得到对应的多个feature-map(类似通道,下一步卷积时候就要加上).多个f维度大小必须是相同的

填充多少圈?填充为什么数值
卷积核个数:取决于需要多少特征图

参数过多怎么办?
参数共享:
区域不随 图片区域位置变化

池化层(做压缩或下采样):

maxpooling最大池化

为什么取最大值?最大值意味着更重要
还有平均池化(效果不好,不常用)

如何从层得到预测结果
将得到的多维特征图,拉成一个超长的特征向量,因为连接层,只能处理一维的
什么才能称为一层?
带有参数计算的,relu不算,池化不算。全连接层算

层数越多未必越好
解决方案:Resnet
同等映射,表现不好的层,我就不用他,权重设为0,将上一层同等映射给下一层.
保底的思想

自己用神经网络训练时,直接用经典网络!因为自己搭建一个好的网络结构可能需要一年时间。妙哉
感受野,就是当前层能感受到的上一层的范围
越大越好

递归神经网络
时间序列,如何考虑到时间的因素

隐藏层:x2输入的时候,x1的中间结果会一起参与计算。x3输入的时候,就会和x1,x2一起
rnn用于语言处理NLP
使用word2rec 将单词转换为向量

rnn的问题:第一万个数据会考虑前9999个结果,可能会产生误差,比如说第一万句时候,第一句可能没什么关联。解决方案:健忘




word2rec:要考虑顺序和位置,近义词表示同样的含义
词向量空间:一般为50维到300维,不确定的时候,推荐使用300维
有了向量,就可以计算相似度

词-->语料库大表(存储了每个词对应语料库维度的各个参数,最初是随机的)-->词向量-->输出-->更新语料库大表,和权重参数
数据从哪里来?随便!
如何构建训练数据? 滑动窗口
cbow:输入上下文,输出中间部分

skipgram:输入中间词,预测上下文
工具包:gensim
词库中有5w个词语的话,就是五万类分类。太大了,如何改进?
- 原来是A预测B,现在是A,B输入,预测可能性的大小,即成为了两分类问题。从而去更新网络。两分类问题的数据集,不能都是1,否则导致过拟合,应该引入0
引入0,称为负样本(负采样模型)
多少个合适呢?一般推荐5个

这部分word2rec着实没太理解:咋就成二分类问题了??只是训练能够使用二分类来训练,那预测的时候呢,不还是得找到词库中每个词语??(麻烦大佬评论告知)
要用keras貌似用tensorflow才是大势所趋。学别的教程去啦

