近期需要学习下这门课程,我是在B站:邱锡鹏教授的《神经网络与深度学习》所学习的,这篇此博客当作我的学习笔记来用,有遗忘时回来看一看

1 什么是神经网络和机器学习

机器学习就是一个分类问题,分出各种值的类型
也是回归问题
什么是机器学习≈构建一个映射函数

开法人工智能系统的流程

1.1什么是神经网络

2.基本概念

2.1损失函数

损失函数是为了表示预测模型和真实值之间的差距

2.1.1 平方损失函数

平方损失函数一般不适合分类问题

正则化:所有损害优化的方法都是正则化
知乎上的一个博主对正则化,经验风险、结构风险讲的非常好、

2.1.1 线性回归


经验风险:训练集所带来的错误
使得经验错误最小就是一个优化的方法

最大似然估计:
与经验风险最小化的解等价

贝叶斯估计:


几种概率和最小化的关系

2.1.2 偏差和方差

模型选择的几种经典例子

偏差表示训练模型与最优模型之间的差值
方差表示在不同训练集训练出的模型的差值

偏差和方差分解给机器学习模型提供了一种分析途径,但在实际操作中难以直接衡量.一般来说,当一个模型在训练集上的错误率比较高时,说明模型的拟合能力不够,偏差比较高.这种情况可以通过增加数据特征、提高模型复杂度、减小正则化系数等操作来改进.当模型在训练集上的错误率比较低,但验证集上的错误率比较高时,说明模型过拟合,方差比较高.这种情况可以通过降低模型复杂度、加大正则化系数、引入先验等方法来缓解.此外,还有一种有效降低方差的方法为集成模型,即通过多个高方差模型的平均来降低方差

3.线性模型

线性分类器是一种有监督学习
可以解决图像分类模型和文本监督模型

3.1 线性分类模型

多分类的几种方法

3.2 交叉熵与对数随机函数

交叉熵用来作为损失函数

交叉熵越大,预测的就越不准
交叉熵为零,说明准确率为100%

Logistic回归

将获取的值,从(-∞,+∞)映射到(0,1)的范围上
解决分类问题的一个很好的函数

Softmax回归
Softmax回归是在Logistic回归上的扩展,可以取解决多分类问题

转载博主说的这句话bitcarmanlee
如果你在开发一个音乐分类的应用,需要对k种类型的音乐进行识别,那么是选择使用 softmax 分类器呢,还是使用 logistic 回归算法建立 k 个独立的二元分类器呢?
这一选择取决于你的类别之间是否互斥,例如,如果你有四个类别的音乐,分别为:古典音乐、乡村音乐、摇滚乐和爵士乐,那么你可以假设每个训练样本只会被打上一个标签(即:一首歌只能属于这四种音乐类型的其中一种),此时你应该使用类别数 k = 4 的softmax回归。(如果在你的数据集中,有的歌曲不属于以上四类的其中任何一类,那么你可以添加一个“其他类”,并将类别数 k 设为5。)
如果你的四个类别如下:人声音乐、舞曲、影视原声、流行歌曲,那么这些类别之间并不是互斥的。例如:一首歌曲可以来源于影视原声,同时也包含人声 。这种情况下,使用4个二分类的 logistic 回归分类器更为合适。这样,对于每个新的音乐作品 ,我们的算法可以分别判断它是否属于各个类别。

3.2.1 交叉熵损失函数的实现

np.argmax函数,返回一组数中最大的数的坐标

one_dim_array = np.array([1, 4, 5, 3, 7, 2, 6])
print(np.argmax(one_dim_array))

输出:4

感知机
一种可以解决二分类的学习算法
当分类错误,更新权重,一直到全部都能分类正确为止

犯错W参数就发生迭代

支持向量机

软间隔:
当约束条件比较严格,找不到最优解的时候,引入一种松弛变量
支持向量机还支持核函数:
核函数的功能就是从低维度的空间向高维度空间转换的函数, 因为在低维空间不可以线性分类的问题到高维度空间就可以线性分类的。 低维空间的点映射到高维空间的点后,两个点的内积 就是核函数。

3.3 梯度下降算法

梯度下降算法可以求出局部最优解


当陷入到鞍点的时候,梯度消失,无法继续优化

3.4 多分类问题(softmax的实现)

4.神经网络

前馈网络

神经网络,用一个加权的函数表示

4.1激活函数


斜坡函数计算更高效
复合函数,S型函数和斜坡函数的混合,通过两个参数进行控制

4.2神经网络

由多个神经元所连接的网络即叫神经网络

4.3反向传播算法

又称BP(Back Propagation)

4.4 过拟合和欠拟合

5 卷积神经网络

神经网络,只与当前的输入有关
卷积神经网络:与之前的输入也有关
局部不变性
卷积层与全连接层相比,参数会少

5.1 用卷积代替全连接

用卷积来代替全连接的好处是可以大大减少超参数的设定,大大减少卷积层和下一层的连接数,提高训练效率

卷积层可以捕捉某种特定的局部特称

5.2汇聚层

降低特征维数,避免出现过拟合的现象
汇聚层的主要优点之一是减轻卷积层对位置的过度敏感
当图片进行上下作用平移时,卷积层仍然可以识别到该模式

卷积网络接收 当前的卷积网络结构趋向于小卷积,大深度

5.3空洞卷积

在卷积核中间加入空洞,来变相增加卷积核的大小

增大感受野

5.4 转置卷积/微步卷积

将卷积从低微特征映射到高维特征

5.5 典型的卷积神经网络

残差网络

5.6 池化层 Polling

池化层(又名:汇聚层),是卷积神经网络的重要组成部分,卷积层和池化层在网络中经常交替使用
池化层的主要作用是降低对卷积层对位置的敏感性,还能一定程度上防止过拟合
在个人理解中,池化层其实是一种特殊的卷积层,卷积层的主要目的是提取和强化检测目标的特征,而池化层的目的是降低训练模型对位置信息的敏感度
例如:一张明星照片,我们一眼就能看出来是哪个明星,当我们将该照片的像素左移一位后,我们这个照片跟刚才的是同一张。但是计算机无法进行判断,此时加入池化层,就可以消减模型对位置信息的敏感程度。

6 循环神经网络

6.1什么是循环神经网络

前两章学习的全连接神经网络和卷积神经网络,在处理图片时,只能处理图片的信息,而对每个图片前后的关联信息不敏感。
循环神经网络(Rerrent Neural Network, RNN),RNN对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,利用了RNN的这种能力,使深度学习模型在解决语音识别、语言模型、机器翻译以及时序分析等NLP领域的问题时有所突破。
例如:
我喜欢吃苹果
苹果是一家很棒的公司
上面的两句话人们可以一眼就分辨出,一个代表的是我们平常吃的苹果,另外一个代表的是一家公司。但是机器识别这句话的时候就不能分别出来了,这就需要机器根据语境(文字前后之间的关系)来判断了,而循环神经网络的记忆功能可以很好的满足这个要求。

6.2循环神经网络的记忆功能是如何实现的

6.2.1时延神经网络

在此基础之上,建立一个额外的延时单元,就可以形成一个最简单的时延神经网络

自回归模型:通过历史信息来预测自己当前的值

循环神经网络的状态公式

6.3 循环神经网络应用到机器学习中

什么是长期依赖

长期依赖是指当前系统的状态,可能受很长时间之前系统状态的影响,是RNN中无法解决的一个问题。
如果从“这块冰糖味道真?”来预测下一个词,是很容易得出“甜”结果的。但是如果有这么一句话,“他吃了一口菜,被辣的流出了眼泪,满脸通红。旁边的人赶紧给他倒了一杯凉水,他咕咚咕咚喝了两口,才逐渐恢复正常。他气愤地说道:这个菜味道真?”,让你从这句话来预测下一个词,确实很难预测的。因为出现了长期依赖,预测结果要依赖于很长时间之前的信息。

如何从数学的角度来理解梯度消失或者爆炸问题呢,我们将以一个简单的、缺少非线性激活函数和输入x的循环神经网络为例。我们可以认为,循环联系为:


3.解决方法
(1)渗透单元及其它多时间尺度的策略
(2)长短期记忆和其它门控RNN
(3)优化长期依赖(截断梯度、引导信息流的正则化)
原文链接:https://blog.csdn.net/qq_28437273/article/details/79656605

6.4 LSTM (long short-tream memory) 长短期记忆网络

与LSTM与RNN相比,LSTM更高级,因为LSTM可以选择性的"忘记"不重要的和有选择地“记住”重要的。而RNN在对较远的输入信息就会遗忘的近似为零了。
LSTM内部主要有三个阶段:
1.忘记阶段。这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”
2. 选择记忆阶段。这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入 [公式] 进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少记一些。当前的输入内容由前面计算得到的 [公式] 表示。
3. 输出阶段。这个阶段将决定哪些将会被当成当前状态的输出。主要是通过 [公式] 来进行控制的。并且还对上一阶段得到的 [公式] 进行了放缩(通过一个tanh激活函数进行变化)。

6.5 深层循环神经网络

6.6 序列模型

序列模型:输出是连续的,输出的信息是具有前后关联的
序列模型的特点:由于序列模型的数据是具有先后顺序的,可以通过序列前的信息,来判断当前发生的情况。
例如,两个人对话,一个人说:”今天天气真___“,那么通尝试,可以判断接下来因该会说”好“,”不错“,”不好“,等形容词,而不会说,”书包“,”老师“,等词汇。这个就是通过前面的信息,来预测接下来会说什么。

6.7 数学基础知识

序列模型这一节,主要用到的数学知识是条件概率公式

例如:当知道X1~X(t-)

7 数据增强

在处理图片类型的数据时,为了增强训练模型的泛化能力,将图片进行裁剪,拉伸,压缩,改变比例,变色的处理

8微调(白嫖)

微调,故名思义,就是把其他人已经训练好的模型拿过来,作为预训练模型,在此基础之上在做改进的方法
虽然在其他人的基础之上进行训练数据集看起来并不是很好,但在由于当前的深度学习发展迅猛,很多训练模型的都是以(万)为单位的,训练模型数量巨大,所以从0开始训练并不明智。

9 锚框

暂时空着

10 编程基础

想要成为一名合格的深度学习pytorch框架的工程师,需要具有扎实的基本功,才能编写出,简介、高效的代码。其中有一些独有的编程的注意事项需要注意

10.1 矢量化加速

矢量化加速,确切的说是在代码编写的时候,刻意的去使用两个向量直接相加的形式。而不是使用for循环,对矢量中的数据进行逐位相加
看下面的两段代码,第一个用的是矢量相加的形式,第二个是用的for循环的形式,运行效率差的可不是一点半点。

10.2 梯度下降法和画matplotlib图

嘎嘎重要

import torch
import matplotlib.pyplot as plt
%matplotlib inline
x = torch.arange(0.0,10.0,0.1)
x.requires_grad_(True)
x1 = x.detach()
y1 = torch.sin(x1)
y2 = torch.sin(x)
y2.sum().backward()
plt.plot(x1,y1)
plt.plot(x1,x.grad)

10.3 报错的解决办法

10.3.1 当在jupyter notebook上运行的时候,如果出现了报错的现象,可以在代码前加入这两句话

import os#内核挂掉附赠代码
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"#内核挂掉附赠代码,这段代码可以解决包名地的冲突问题

10.4 yield

yiled 是python中的一个语句,其最主要的功能是生成一个generator(生成器)。
生成器是什么意思呢,举个下面图片的例子

那么再来说yiled,yiled最经常的使用办法是放在函数中使用,我们之前学过return。当运行函数碰到return时,直接结束函数的运行,同时返回某个值。
yiled也差不多,当运行函数时,碰到yiled,函数就会中止,但是等下一次重新调用这个函数的时候,就会续接刚才的函数继续运行
感觉还是一头雾水吧,下面看一个例子

10.5 with torch.no_grad():

当进行模型训练的时候,有时我们只是想看一下训练的效果,并不是想通过验证集来更新网络时,就可以使用with torch.no_grad()

10.6 reshape

reshape(-1),将张量变成一串
reshape(-1,1),将张量变成一列

10.7 transform.ToTensor

from torchvision import transforms中的一个函数
可以将图像PLT_image或转化为一个张量的形式,来方便处理

11 matplotlib的画图小贴士

11.1隐藏坐标轴的代码

ax.axes.get_xaxis().set_visible(False)
该段代码可以将图像的坐标轴隐藏掉,适用于显示图片,不需要坐标的情况下
没去掉坐标轴的情况:

去掉坐标轴的情况

还有很多还没学完,有关深度学习的基础知识学习,暂时告一段落,因为要开始转战实践了,剩下的慢慢学吧,哈哈

神经网络与机器学习笔记相关推荐

  1. 神经网络与机器学习 笔记—LMS(最小均方算法)和学习率退火

    神经网络与机器学习 笔记-LMS(最小均方算法)和学习率退火 LMS算法和Rosenblatt感知器算法非常想,唯独就是去掉了神经元的压制函数,Rosenblatt用的Sgn压制函数,LMS不需要压制 ...

  2. 神经网络与机器学习 笔记—基本知识点(下)

                   神经网络与机器学习 笔记-基本知识点(下) 0.1 网络结构: 神经网络中神经元的构造方式与用于训练网络的学习算法有着密切的联系,有三种基本的网络结构: 0.7 知识表示 ...

  3. 神经网络与机器学习 笔记—基本知识点(上)

    神经网络与机器学习 笔记-基本知识点(上) 0.1 什么是神经网络: 神经网络是由简单处理单元构成的大规模并行分布处理器,天然具有存储经验知识和使之可用的特性.神经网络在两个方面与大脑类似. 神经网络 ...

  4. 神经网络与机器学习 笔记—小规模和大规模学习问题

    监督学习的可行性依赖于下面的关键问题: 由N个独立同分布的样本(X1,D1),(X2,D2),-,(Xn,Dn) 组成的训练样本是否包含了构造具有良好泛化性能的机器学习的足够信息? 计算考虑: 神经网 ...

  5. 神经网络与机器学习 笔记—卷积神经网络(CNN)

    卷积神经网络 之前的一些都是考虑多层感知器算法设计相关的问题,这次是说一个多层感知器结构布局相关的问题.来总结卷积神经网络.对于模式分类非常合适.网络的提出所隐含的思想收到了神经生物学的启发. 第一个 ...

  6. 神经网络与机器学习 笔记—支持向量机(SVM)(上)

    支持向量机(SVM)的主要思想: 给定训练样本,支持向量机建立一个超平面作为决策曲面,使得正例和反例之间的隔离边缘被最大化. 线性可分模式的最优超平面 训练样本{(xi,di)}^N i=1 ,其中x ...

  7. 神经网络与机器学习 笔记—核方法和径向基函数网络(上)

    对于神经网络的监督学习有多种不同方法.之前一直总结整理的多层感知器反向传播算法,可以看做是递归技术的应用,这种技术在统计学中通称为随机逼近. 这次是采用不同的途径,通过包含如下两个阶段的混合方式解决非 ...

  8. 神经网络与机器学习 笔记—时序模式、非线性滤波

    时序模式.非线性滤波 以多层感知器为例的静态神经网络的原型应用是结构化模式识别.时序模式识别或飞翔性滤波要求对随时间演化的模式进行处理,对特定的时刻的相应不仅依赖于输入的当前值,还依赖于以前的值.简单 ...

  9. 神经网络与机器学习 笔记—复制器(恒等)映射

    反向传播算法是一个对于计算代价函数的梯度(即一阶导数)计算有效的技术.代价函数由刻画多层感知器的可调参数(突触权值和偏置)的函数来表示.算法计算能力是由两个明显的性质而导出的:反向传播算法是局部计算简 ...

  10. 神经网络与机器学习 笔记—泛化和交叉验证

    泛化和交叉验证 泛化 在反向传播学习中,一般从一个训练样本开始,而且通过网络中装载尽可能多的训练样本来使用反向传播算法计算一个多层感知器的突触权值.希望这样设计的神经网络可以很好的泛化.对于从未在生成 ...

最新文章

  1. 信号与系统教学设计样例说明-2021春季学期
  2. 同规格装箱问题c语言算法,装箱问题C语言实现(算法分析报告)(4页)-原创力文档...
  3. 测试开发面试集锦-测试方面(搬运)
  4. 常用色彩空间 HSV模型与RGB模型的相互转换 孟塞尔彩色空间 YCbCr Lab YUV 配色表\配色工具(RGB颜色值与十六进制颜色码转换工具)
  5. 随机生成一个质数的python代码_使用质数生成随机密码
  6. JAVA_出神入化学习路线大纲
  7. [CDA数据分析师学习之路] 【CDA就业班独家发布】学习之路
  8. java编程需要数学知识吗_初学Java编程,需要英语和数学基础吗?
  9. echo输出不重复行到文件 shell_Shell脚本echo指令使用小技巧
  10. [渝粤教育] 中国地质大学 计算机组成原理 复习题 (2)
  11. python while true_小疯谈python(十):程序的控制结构
  12. php开发 公众号自动回复,微信公众号开发之文本消息自动回复php代码_php实例 - sha1...
  13. 深度解密天猫精灵对话系统
  14. 计算机毕业设计(附源码)python学科竞赛赛场安排系统
  15. 20分钟学会TCGA数据处理的视频链接
  16. 2019税务师课件视频题库分享
  17. html版心宽度怎么设置,Word中版心尺寸是什么意思?怎样设置版心尺寸?
  18. 清理电脑垃圾的命令代码
  19. c语言outl函数,如何调用outlook
  20. 亿赛通携手湖北省勘察设计协会 共建数据安全

热门文章

  1. 粒子群算法(PSO)光伏发电 MPPT实现多峰值寻优,阴影遮蔽光伏发电算法 使用s函数编写粒子群算法,阴影遮蔽,实现多峰值寻优
  2. 天翼对讲机写频软件_手台对讲机应该怎么选?
  3. 在计算机中表示一个信息容量的基本单位是,微型计算机中,存储器容量的基本单位是()。...
  4. 关于adb驱动的安装
  5. 最新版计算机知识超全题库,超全的计算机基础知识题库.doc
  6. h3c 链路聚合测试_H3CSE学习之链路聚合
  7. 中国移动亮相2012亚洲移动通信博览会
  8. 远程桌面无法连接 计算机死机,远程桌面时,被控端出现死机现象
  9. linux的php探针使用,php探针在Linux下的安装过程分享
  10. ip数据库 纯真 mysql 查询_纯真IP数据库格式详解 附demo