梯度下降算法是一种非常流行的优化算法,它是优化神经网络的最常用的算法之一。当前的具有最优性能的深度学习工具包基本上都包含了不同的实现梯度下降的算法,但是,这些算法在使用的时候基本上都是当作一个黑箱子在使用,用户不知道其具体的实现细节,因为,具体地描述这些算法的优点或缺点是比较困难的。
这篇博客旨在给读者提供一个各个梯度下降算法之所以有用的直觉,从而帮助用户针对具体的问题选择合适的梯度下降算法。我们首先介绍几种梯度下降算法 的变种,然后总结一下使用该算法训练中会出现的一些挑战,之后具体地介绍常见的优化算法以及它们解决上述挑战的动机和相应的更新规则。我们简单地给出了梯度下降算法的平行化和分布式化的一些设置。最终,考虑一些有助于优化梯度下降算法的特别的策略。
梯度下降主要用来最小化目标函数$J(\theta)$ ,其中参数是$\theta \in R^d$,它通过将参数$\theta$往目标函数相对于参数$\theta$的梯度相反的方向进行更新来一步步地减小目标函数值。 其中学习率$\eta$决定了每次更新的步长。 换句话说,假设目标函数是一座山,参数每次都从山的最陡峭的那一面往下面滚,直到到达谷底,即是局部最小点。
最近一直在做试验,实验跑得特别慢,经常一跑就要两三天,没有实验结果也不想写论文,所以,这两天就看了一点爬虫的基础知识。
主要是跟着这个教程来学:http://cuiqingcai.com/1052.html
最简单的爬虫只需要会使用urllib2库和正则表达式就可以了,不用去考虑多线程,登陆,验证码等问题。爬虫一般是用来在网络上搜集数据的,我们平时用浏览器向特定网站请求数据时,网站会返回html格式的文档,我们所需要的信息一般都包含在html文档中。
所以,爬虫首先需要模拟浏览器的行为向网站请求数据,网站会返回html格式的信息,然后用正则表达式从html中提取出我们需要的信息,这就是最简单的爬虫的所需要实现的功能。
pandas 是python 中一个常用的开源的进行数据处理的package,它有很多功能,但是我常用的就是使用pandas 来读取和处理数据.1
import pandas as pd
pandas中数据存储的基本单位是data_frame,不同于numpy 中的array,dataframe 有很多种对数据操作的method。
读入数据:1
df = pd.read_csv(filename,sep=' ',header=None)
read_csv方法有很多参数,参见:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html
常用参数:
file_path:文件路径和名字
sep : 一行的数据之间使用什么符号分割的,一般是空格,csv文件是逗号
header: 用来当列名的行号,如果没有传入names参数,则header = 0 ,如果传入了names,则为None
names:列名,默认为None
如果传入header =None ,则列名为[0,1,..]这样的整数。
如果仅仅传入上述参数,行的索引也为从0开始的整数。