深度学习入门(看了就会)
什么是深度学习呢?
简单来说就是当你拥有一个数据集的时候,若你想处理它,可能你的反应是for遍历一遍。但深度学习是不需要的。
首先介绍一下深度学习的一些基本概念。
对于一张图片的储存,是分为了三个二维数组,分别是红绿蓝三个颜色。
而我们是将这三个二维数组中的数据全部放到一个列向量中。也就是说,若三个64×64的数组,那列向量x中的元素就是64×64×3个。x作为深度学习的输入,输出我们用y来表示,y的取值是0/1,0表示识别失败,1表示成功。
通常用n表示x维度(上述中n为64643),用m表示训练集的个数.。用X作为整个深度学习的输入,X是m个x组成的n行m列的数组。在python中通常用X.shape输出X的维度,即(n,m)。同理,将输出表示为Y,由m个y组成,Y.shape输出Y的维度(1,m)。
**
logistic回归
**
对于输入X,我们想知道他的输出Y,通常情况下会得到一个Y’,表示它是否满足结果的概率。
已知w是logistic函数的参数,也是n维向量,b就是个实数。
Y’ = w(转置) * x + b , 而对于Y‘ 我们希望它是个零到一之间的数,所以还需要用 sigmoid函数,即Y’ = σ(w(转置) * x + b)。
将括号里面的设为z,可得到z的sigmoid图像:
其中σ(z) = 1 / (1 + e^(-z) ),
可以看出,z越大,sigmoid(z)越接近1;相反,z越小或是越负数,sigmoid(z)就越接近0。
因此,当你做logistic回归时,你要做的就是学习参数w和b,所以Y’ 就变成了对Y较好的估计。
有时候,会用θ(一个0到n的向量),其中θ(0)就是b,θ(1)到θ(n)就是w。
定义一个损失函数,表示Y’ 和Y 之间的误差。在logistic中定义误差函数为δ(Y’ , Y) = -(y*logy’ + (1-y)*log(1-y’)) , 越小越好。
损失函数是在单个训练样本中定义的,成本函数衡量的是在全体训练样本上的表现。
成本函数J(w , b) = 1/mΣ δ(y’(i) , y(i) )
也就是:J(w , b) = -1/mΣ(y*logy’ + (1-y)*log(1-y’))
上面我们提到过,我们要做的就是找到好的参数w和b,所谓好的w和b就是指让成本函数J(w , b)较小的w和b。而这里的J是凸函数,所以是可以保证存在w和b使J有最小值。
【注:这里可能有同学忘记凸函数是啥了,想知道概念的话翻翻高数书就OK了。这里你只需要知道,如果优化的目标函数是凸函数,则局部极小值就是全局最小值。这也意味着我们求得的模型是全局最优的,不会陷入到局部最优值。】】
J的函数图像:
可以看到J(w,b)像个碗一样,碗底的红点就是他的最小值,对应的w和b就是我们要找的。通常情况下都是给他初始化,再进行一步步逼近。但是从他的图像可以发现,无论从哪一个点初始化,最终都会得到碗底的那个点。
梯度下降法:
在logistic回归函数中我们使用梯度下降法来寻找w和b。通俗的来讲,梯度下降法就是从某一点开始,沿着当前最陡的坡面下降,迭代多次之后就会找到最优解。
当我们忽略b只看w的时候,图像大概是一个二维的这样的:
我们会按照如下的方法来进行w的迭代:
w := w - α(dJ / dw),α表示的是学习率,下面会详细介绍如何选择α,它的作用就是控制每一次迭代,或者梯度下降法的步长。括号中的其实就是函数J关于w的导数,理解了之后代码实现中我们都用dw来进行表示,即w := w - α(dw)。
因此,
w := w - α(dJ(w , b) / dw)
b := b - α(dJ(w , b) / dw)
向量化,它的作用可以理解为消除代码中的显式for循环语句,可以极大地缩短时间。
补充一个看论文的常见的标语:
FLOPS(全大写) :是floating point operations per second的缩写,意指每秒浮点运算次数,理解为计算速度。是一个衡量硬件性能的指标。
FLOPs(s小写) :是floating point operations的缩写(s表示复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。
深度学习入门(看了就会)相关推荐
- 【深度学习入门基础】一、从线性代数和微积分的角度看神经网络
[深度学习入门基础]从线性代数和微积分的角度看神经网络 这是深度学习入门系列文章,我们企图用最简洁的语言.最干净的表达,让读者快速获取到他所想要的.本系列文章持续更新.一些网上能查到的基础知识,诸如激 ...
- 【吐血推荐】机器学习/深度学习入门资料汇总及学习建议【入门必看】
机器学习入门,初学者遇到的问题非常多,但最大的问题就是: 资料太多!!!看不完!!!不知道如何取舍!!! 一.机器学习的数学基础 正规的机器学习数学基础主要有: 数学分析(微积分),线性代数,概率论, ...
- 福利丨一门面向所有人的人工智能公开课:MIT 6.S191,深度学习入门
对初学者来说,有没有易于上手,使用流行神经网络框架进行教学的深度学习课程?近日,麻省理工学院(MIT)正式开源了在线介绍性课程「MIT 6.S191:深度学习入门」.该课程包括一系列有关神经网络及其在 ...
- 深度学习入门指北——从硬件到软件
作者:隔壁王大喵 近日,Rachel Thomas在fast.ai上发布了一篇博文<What you need to do deep learning>,他希望通过这篇文章回答一些深度学习 ...
- LeCun亲授的深度学习入门课:从飞行器的发明到卷积神经网络
Root 编译整理 量子位 出品 | 公众号 QbitAI 深度学习和人脑有什么关系?计算机是如何识别各种物体的?我们怎样构建人工大脑? 这是深度学习入门者绕不过的几个问题.很幸运,这里有位大牛很乐意 ...
- BP算法双向传_链式求导最缠绵(深度学习入门系列之八)
摘要: 说到BP(Back Propagation)算法,人们通常强调的是反向传播,其实它是一个双向算法:正向传播输入信号,反向传播误差信息.接下来,你将看到的,可能是史上最为通俗易懂的BP图文讲解, ...
- 深度学习入门课程学习笔记06 反向传播
本篇学习笔记对应深度学习入门课程 第七课 博客地址:http://blog.csdn.net/tangyudi 欢迎转载 反向传播: 咱们在之前的课程讲了一系列的前向传播的知识点,前向传播也就是从输入 ...
- 深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器
深度学习入门教程UFLDL学习实验笔记一:稀疏自编码器 UFLDL即(unsupervised feature learning & deep learning).这是斯坦福网站上的一篇 ...
- 深度学习入门之PyTorch学习笔记:卷积神经网络
深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 4 卷积神经网络 4.1 主要任务及起源 4.2 卷积神经网络的原理和结构 4.2.1 卷积层 1. ...
- 深度学习入门之PyTorch学习笔记:多层全连接网络
深度学习入门之PyTorch学习笔记 绪论 1 深度学习介绍 2 深度学习框架 3 多层全连接网络 3.1 PyTorch基础 3.2 线性模型 3.2.1 问题介绍 3.2.2 一维线性回归 3.2 ...
最新文章
- java执行linux shell命令,并拿到返回值
- MQTT连接阿里云IoT(四)
- 【Android QR Code】开源项目:ZXing(一)导入项目
- Linux 下如何查询 tomcat 的安装目录
- refreshtoken用mysql_微信access_token和refresh_token保存于redis
- 大数据对社交媒体的影响_数据如何影响媒体,广告和娱乐职业
- ASP中Application与Sesstion对象的使用实例
- CSS:输入框input光标距离输入框左边间距设置
- python网络编程学习笔记(9):数据库客户端
- TIPS:java 类的全局变量与静态变量
- 李宏毅机器学习Lesson2——Logistic Regression实现收入预测
- Android签名证书生成
- 新浪微博、腾讯微博开放平台整合DEMO分享
- Java类加载机制的几个个阶段,加载、验证、准备、解析、初始化【jvm】
- Android Xml解析
- java 变量的命名
- Grails in Action:完成啦
- Day10安卓 专高 day10 ContentProvider内容提供者
- Python pyautogui支持的按键的字符
- 五种方式显示圆形图片