您现在的位置是:首页 > 正文

深度学习入门

2024-04-01 02:51:11阅读 1

---恢复内容开始---

Softmax函数,或称归一化指数函数

逻辑函数的一种推广。它能将一个含任意实数的K维向量 {\displaystyle \mathbf {z} } “压缩”到另一个K维实向量 {\displaystyle \sigma (\mathbf {z} )} 中,使得每一个元素的范围都在{\displaystyle (0,1)}之间,并且所有元素的和为1。该函数的形式通常按下面的式子给出:

{\displaystyle \sigma (\mathbf {z} )_{j}={\frac {e^{z_{j}}}{\sum _{k=1}^{K}e^{z_{k}}}}}    for j = 1, …, K.

wiki的资料看完了,就感觉softmax的作用只有归一化。

 

cross-entropy loss  : cost = -1 / m * np.sum(Y * np.log(A) + (1 - Y) * np.log(1 - A))  最后要除以m也就是样本个数,所以每一次不管用的batch多大,都是可以的

 

Coursera 深度学习系列5课程,第一个课程的视频我刷完了,现在正在刷第二个的。

就从第二个开始记笔记吧,目的就是整理一些最基本的知识点。

 

第二期课程

Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization

第一周

Title: Normalizing Input

1,所有都减去均值,zero-mean

2.将方差归一化

对训练集和测试集使用同样的均值和方差进行归一化,指数值上的同样

当输入数据在不同维度上取值范围相差很大,梯度下降会运行的很慢,就需要归一化。

Title: Vanishing/ exploding gradinets 梯度的消失和爆炸

很深的神经网络里,参数W里面的值不断乘起来,可能爆炸,也可能消失,对应的梯度也是一样

 

Title: Weights initialization for DNN

有几个常见的设置初始参数的方法,让W的方差等于1/n,n是输入神经元的数量

 

Title: gradient check

用公式计算一遍dtheta, 再用数值的方法计算一遍dtheta,比较是否大致相等,看看求导的部分有没有做错。数值方法不需要你自己计算导数的,数值法使用J(w+e),J(w-e)

最后算两个结果的欧氏距离

 

title: mini-batch gradient decent

把大的训练集分成小的batch,用一个for循环对每个batch进行计算

min-batch的大小设为训练集大小时,就是batch gradient decent,批梯度下降,每一步运行的噪声相对小,很慢

设为1时,就变成随机梯度下降,每一步运行的噪声相对大,但是总体还是下降的,一般不会收敛。运算没有利用向量化加速的优点。

一般选择64到512作为mini-batch-size,取2的幂算起来更快一些

这也算是一个超参数了

 

title: exponentially weighted average 指数加权平均

y哇这个东西和互补滤波那个一样的,移动平均滤波里,y = theta * y(-1) + (1-theta)x(0)

这时候的y近似于前 1/(1-theta) 个数据的平均

这里以1/e为一个基准,判断这个数据有没有被算入平均

 

title: bias correction

一开始使用指数加权平均的时候,y(0) = 0会造成开始的那部分数据的偏差

那么把 y = y ( 1 - theta^t) t代表index,这种估计能把一开始的偏差给减少

 

title: gradient decent with momentum

Vdw(t = 0) = theta * Vdw(t= -1) + (1-theta)dw

Vdb(t = 0) = theta * Vdb(t = -1) + (1-theta)db

 

title: RMSprop

dw = dw / ||w||2

db = db / ||b||2

基本上效果都好于直接的梯度下降,举得例子的原理还是避免某个维度的梯度一直震荡的问题

 

title: Adam optimization (很多优化算法被提出,很多不general,adam被证明是比较general和效果好的

adam是momentua+RMSprop

theta参数分别有推荐值0.9,0.99

 

title: learning rate decay

为了避免在最后的部分的震荡和噪声

一种衰减模型learning rate: alpha = 1 / (1 + decay * iterationindex) * alpha(0)

也可以有其他的模型比如指数衰减

 

title: problem of local optimal

深度学习中,遇到的梯度为0的点,不太可能是极大极小或者最大最小值,而应该是鞍点,在某些维度上是极大,某些维度上极小

低维空间里的直觉并不都适用于高维空间

停滞区,导数一直为0的一块区域。算法会在停滞区消耗很长时间来找到下一个坡进行下降,这里我没怎么看懂其实。反正鞍点肯定是要越过去的把。

我们的算法遇到鞍点会停下吗?

---恢复内容结束---

 

 

第一周作业部分:

sigmoid with numpy, numpy操作对不同维度的数据都可以进行,以element-wise的模式

sigmoid的导数,sig = s, dervite = s* (1-s)

reshape((shape))

按行归一化,如果矩阵[[1,2],[3,4]], 先求x_norm = x_norm = np.linalg.norm(x,axis = 1, keepdims = True)

也就是[[sqrt(5)], [5]]这样一个列向量,然后矩阵除以norm,根据broadcasting的性质可以归一化

Note that np.dot() performs a matrix-matrix or matrix-vector multiplication. This is different from np.multiply() and the * operator (which is equivalent to .* in Matlab/Octave), which performs an element-wise multiplication.

np.dot是正常的矩阵乘法,multiply和乘号是元素是element-wise形式的乘法

L1 LOSS: loss = np.sum(abs(yhat - y))

L2 LOSS: loss = np.sum(np.square(yhat - y))

cross-entropy loss

转载于:https://www.cnblogs.com/zherlock/p/10963806.html

网站文章

  • Java跨域请求代码

    1、get请求的方式get请求中,如果拼接的参数字符串中带有空格,后台会报错无法请求成功,适用于通过属性值查询对象接口。import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.HttpURLConnection;import j...

    2024-04-01 02:50:29
  • 如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...

    如何在一个页面中动态放置多个Droppable来接受不同的Draggable?(accept参数的用法)...

    工作中遇到这个问题,问别人解决了。答案在问题的下半部分,仅供参考。http://stackoverflow.com/questions/6501812/how-to-use-danymic-accept-value-in-jqueryui-droppable 点击下载免费的敏捷开发教材:《火星人敏捷开发手册》转载于:https://www.cnblogs.com/JPAORM/...

    2024-04-01 02:50:24
  • 一种有趣的弱监督机器学习问题:比例标签学习(Learning from label proportions)

    一种有趣的弱监督机器学习问题:比例标签学习(Learning from label proportions)

    欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法...

    2024-04-01 02:50:16
  • sublime某些插件出现'Node.js was not find ...' 的解决方法

    丫路径中又中文吧。。step1: find "HTMLPrettify.py" and make a backup, it should be here ~/Library/Application\ Support/Sublime\ Text\ 2/Packages/HTML-CSS-JS\ Prettify/HTMLPrettify.pystep2: line 83, rep

    2024-04-01 02:49:35
  • Java程序员如何通过跳槽薪资翻倍?java开发项目经验描述

    Java程序员如何通过跳槽薪资翻倍?java开发项目经验描述

    一、面试官考点之索引是什么?索引是一种能提高数据库查询效率的数据结构。它可以比作一本字典的目录,可以帮你快速找到对应的记录。索引一般存储在磁盘的文件中,它是占用物理空间的。正所谓水能载舟,也能覆舟。适...

    2024-04-01 02:49:26
  • impress.js css模板,impress.js 使用教程

    一、官方示例文件构成impress:jsimpress.js(JavaScript文件,提供特效支持,核心库)cssimpress_demo.css(CSS文件,提供样式支持)htmlindex.html(HTML文件,幻灯片入口)二、HTML说明头部html>impress.js支持反馈当浏览器不支持时会显示,可改写错误信息的内容。你的浏览器不支持impress.js你可以下载Chr...

    2024-04-01 02:49:19
  • Linux系统编程之进程间通信方式介绍 最新发布

    通信方式效果无名管道速度慢,容量有限,只有父子进程能通讯命名管道 (FIFO)任何进程间都能通讯,但速度慢消息队列容量受到系统限制,且要注意第一次读的时候,要考虑上一次没有读完数据的问题共享内存能够很...

    2024-04-01 02:48:35
  • spring加载流程refresh之finishBeanFactoryInitialization(beanFactory)

    spring加载流程refresh之finishBeanFactoryInitialization(beanFactory)

    实例化所有BeanAbstractApplicationContext.finishBeanFactoryInitialization()判断是否有bdName为conversionService的b...

    2024-04-01 02:48:27
  • nginx的配置、虚拟主机、负载均衡和反向代理--03

    第3篇主要讲 URL路由重写 和 读写分离nginx中的 location 正则模块nginx中的URL重写怎么做。url重写模块,主要是在location模块面来实现,我们一点一点的看。首先看下location 正则匹配的使用。还记得之前是如何用location来定位.php文件的吗?location ~ \.php$ { fastcgi_pass 127.0.0.1:9000

    2024-04-01 02:48:18
  • SQL_数据库基础之级联删除和级联更新

    SQL_数据库基础之级联删除和级联更新

    原文: 级联删除 删除包含主键值的行的操作,该值由其它表的现有行中的外键列引用。在级联删除中,还删除其外键值引用删除的主键值的所有行。 语法: FOREIGN KEY(COLUMN[,...n]) REFERENCES referenced_table_name[(ref_column[,...n])] [ON DELETE cascade] [ON UPDATE cascad

    2024-04-01 02:48:11