神经网络基础

1.二分分类

符号约定:

2.logistic回归

w,x为特征向量,b为常数,w,b为参数,y的取值范围是0-1

函数图像:

3.logisitic回归损失

损失(误差)函数:衡量单个训练样本算法的运行情况

损失函数要尽可能的小,所以

成本函数(cast function):衡量在全体训练样本上的表现

4.梯度下降算法

从初始点开始,朝最陡的方向走,直至收敛到全局最优点

5.导数

6.计算图

计算图也叫数据流图,可以把计算图看做是一种有向图,每一个计算都是计算图上的一个节点,而节点之间的边描述了计算之间的依赖关系

7.计算图的导数计算

微积分链规则:如果x -> y -> z (x影响y和y影响z)那么d(z)/d(x) = d(z)/d(y) * d(y)/d(x)

编程约定:代表着相对于各种中间量的最终输出变量的导数。

即:

8.logsitic回归中的梯度下降法

d(a) = d(l)/d(a) = -(y/a) + ((1-y)/(1-a))

d(z) = d(l)/d(z) = a - y
d(W1) = X1 * d(z)
d(W2) = X2 * d(z)
d(B) = d(z)
w1 = w1 - alpa * dw1
w2 = w2 - alpa * dw2
b = b - alpa * db
9.m个样本的梯度下降

逻辑回归伪代码:

J = 0; dw1 = 0; dw2 =0; db = 0;                 # Devs.
w1 = 0; w2 = 0; b=0;                # Weights
for i = 1 to m
    # Forward pass
    z(i) = W1*x1(i) + W2*x2(i) + b
    a(i) = Sigmoid(z(i))
    J += (Y(i)*log(a(i)) + (1-Y(i))*log(1-a(i)))

    # Backward pass
    dz(i) = a(i) - Y(i)
    dw1 += dz(i) * x1(i)
    dw2 += dz(i) * x2(i)
    db  += dz(i)
J /= m
dw1/= m
dw2/= m
db/= m

# Gradient descent
w1 = w1 - alpa * dw1
w2 = w2 - alpa * dw2
b = b - alpa * db

10.向量化

尽可能避免循环

NumPy库(点)功能默认使用向量化

向量化可以在CPU或GPU上完成,并认为SIMD(单指令多数据)操作

11.向量化logistics回归

作为一个输入,我们有一个矩阵X及其[Nx, m]矩阵Y及其矩阵[Ny, m]

12.python中的广播

在NumPy中,obj.sum(axis = 0)和obj.sum(axis = 1)对行进行求和和对各列进行求和。

在NumPy中,obj.reshape(1,4)通过广播这些值来更改矩阵的形状。

reshape()在计算上很便宜,因此无论你对计算还是不确定的地方,它都会变得很重要。

当您使用与操作不匹配的矩阵进行矩阵运算时,广播可以工作,在这种情况下,NumPy通过广播这些值自动使形状准备就绪。

13.关于python/numpy的说明

如果你没有指定矢量的形状,它将采用一个形状,(m,)并且转置操作将不起作用。你必须reshape它(m, 1)

assert(a.shape == (5,1))用来检查你的矩阵形状是否是必需的

14.jupyter笔记的快速指南

要打开Jupyter Notebook,打开命令行并调用:

jupyter-notebook #sudo jupyter-notebook –allow-root

计算Sigmoid的导数:

s = sigmoid(x)ds = s * (1 - s) # derivative using calculus

要制作(width,height,depth)一个矢量图像,请使用以下命令:

v = image.reshape(image.shape[0]*image.shape[1]*image.shape[2],1) #reshapes the image.

15.实践

使用Shift + Enter(或“运行单元格”)运行单元格

Numpy社区:www.numpy.org

快速访问文档:库名.函数名? 例如:np.exp?

16.1 numpy基础函数:

sigmoid gradient :

s = 1/(1+np.exp(-x))
ds =s*(1-s)

将三维图片转化为一维向量:

v = image.reshape(image.shape[0]*image.shape[1]*image.shape[2],1)

求范式:获得更好的性能:

x_norm = np.linalg.norm(x,axis=1,keepdims=True)

x = x/x_norm

softmax:

假设我们有一个数组,V,Vi表示V中的第i个元素,那么这个元素的Softmax值就是

S_i = \frac{e^{V_i}}{\sum_j{e^{V_j}}}也就是说,是该元素的指数,与所有元素指数和的比值

x_exp = np.exp(x)

x_sum = np.sum(x_exp,axis=1,keepdims=True)

s = x_exp/x_sum

16.2 向量

损失:

loss1 = np.sum(abs(yhat-y))

loss2= np.dot(y-yhat,y-yhat)

16.3 包

numpy是用Python进行科学计算的基本软件包。
h5py是与H5文件中存储的数据集进行交互的常用软件包。
matplotlib是一个着名的库,用于在Python中绘制图表。
使用PIL和scipy来测试模型
16.4预处理新数据集的常见步骤如下:

找出问题的尺寸和形状(m_train,m_test,num_px,…)
重塑数据集,使每个示例现在成为一个大小的向量(num_px * num_px * 3,1)
“标准化”数据
16.5建立神经网络的主要步骤是:

定义模型结构(如输入特征和输出的数量)
初始化模型的参数。
循环。
计算当前损失(正向传播)
计算当前梯度(反向传播)
更新参数(梯度下降)
kaggle.com是数据集和竞赛的好地方。
Pieter Abbeel是深度强化学习中最好的之一。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WY_记录

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值