神经网络与深度学习_吴恩达 学习笔记(一)

第二章 神经网络基础

符号说明

(x,y)xRnx,y{0,1}
m{(x(1)y(1)),(x(2)y(2)),,(x(m)y(m))}
m_train
m_test
X=(x(1),x(2),,x(m))X.shape=(nx,m)
Y=(y(1),y(2),,y(m))Y.shape=(1,m)
w,b

1 Logistic 回归

1.0 使用场景

有监督的二元分类问题,即输出标签为0或1。

1.1 模型任务

对于给定的X,预测 y^=P(y=1|x)

1.2 模型参数

wRnx,bR

1.3 模型输出

y^=σ(wTx+b)
其中, σ(x)=11+ex 使 y^ 符合概率定义,其函数图象为:(令 z=wT+b sigma函数图象

1.4 参数训练
1.4.1 损失函数(Loss function)

损失函数用于刻画单个样本的预测值与实际值的差异。 L(y^,y)=(ylog(y^)+(1y)log(1y^))
该函数可以起到与 12(yy^)2 同样的描述真实值与预测值间距离的作用,用时使得优化问题为凸,即可以找到全局最优而非停滞在局部最优。

1.4.2 成本函数(Cost funciton)

成本函数描述模型在预测总体样本时的表现。参数训练的目标是使找到使成本函数值最小的参数,即实现全局最优。

J(w,b)=1mmi=1L(y^,y)=1mmi=1[ylog(y^)+(1y)log(1y^)]

1.4.3 梯度下降算法

Repeat {
w=wαJ(w)w
b=bαJ(b)b
}
其中, α 是学习速率。

1.4.4 未向量化实现

符号说明

a(i)=σ(z(i))
dz(1)=a(1)y(1) ,dz(2)=a(2)y(2)
dZ=[dz(1)dz(2)dz(m)]
Z.shape=(nx,m)
A=[a(1)a(2)a(m)]
Y=[y(1)y(2)y(m)]
dZ=AY=[a(1)y(1)a(2)y(2)a(m)y(m)]

dw=0
dw+=x1*dz1
dw+=x2*dz2
...
dw+=xm*dzm
dw/=m

db=0
db+=dz1
db+=dz2
...
db+=dzm
db/=m
1.4.5 向量化实现
db=1/m*np.sum(dZ)
dw=1/m*np.dot(X,dZ.T)
1.5模型代码
    import math
    import numpy as np
    def basic_sigmoid(x)s=1/(1+math.exp(-x))
    return s

    J=0
    dw=0
    db=0
    for i in range(1000):
        Z=np.dot(w.T,X)+b
        A=basic_sigmoid(Z)
        dZ=A-Y
        dw=1/m*np.dot(X,dZ.T)
        db=1/m*np.sum(dZ)
        w+=-alpha*dw
        b+=-alpha*db

2 python中的广播(broadcasting)

m行n列的矩阵,加减乘除1行n列的矩阵或m行1列的矩阵时,会将1行n列或m行1列的矩阵分别在行和列上复制n和m次,得到m行n列的矩阵后,再和第一个m行n列的矩阵相运算。

broadcasting

3 作业笔记

What you need to remember:
- np.exp(x) works for any np.array x and applies the exponential function to every coordinate
- the sigmoid function and its gradient
- image2vector is commonly used in deep learning
- np.reshape is widely used. In the future, you’ll see that keeping your matrix/vector dimensions straight will go toward eliminating a lot of bugs.
- numpy has efficient built-in functions
- broadcasting is extremely useful
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.outer()是a的第一个元素跟b的每一个元素相乘作为第一行,第二个元素跟b的每一个元素相乘作为第二个元素…结果的shape为(a的维数的累积,b的维数的累积)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值