神经网络学习笔记(1):激活函数、梯度下降、基本构建等

神经网络是机器学习中的一个模型,可以用于两类问题的解答: 

分类:把数据划分成不同的类别

回归:建立数据间的连续关系

 

感知器算法->误差函数(梯度下降)

离散误差与连续误差

要使用梯度下降,误差必须是连续的,误差函数必须是可微分的

 

离散算法:学生是否被录取->连续算法:学生被录取概率

激活函数:step function->sigmoid function

多类别分类和 Softmax

用 Python 编写 Softmax 公式:

def softmax(L):

    expL = np.exp(L)

    sumExpL = sum(expL)

    result = []

    for i in expL:

        result.append(i*1.0/sumExpL)

    return result

 

最大似然

最大化概率

交叉熵(cross entropy):

交叉熵低的模型误差更小

纯粹是因为好模型可以给更高的频率,取对数取反(因为加法比乘法好计算)就变成更小的交叉熵了

目标:最大化概率->最小化交叉熵

代码:

def cross_entropy(Y, P):

    Y = np.float_(Y)

    P = np.float_(P)

return -np.sum(Y * np.ln(P) + (1 - Y) * np.ln(1 - P))

def cross_entropy(Y, P):

    sum = 0

    for i in range(0,len(Y)):

        a = -((Y[i] * np.ln(P[i]) + (1 - Y[i]) * np.ln(1 - P[i])))

        sum += a

return sum

多类别交叉熵:

逻辑回归:

计算误差函数:

最小化误差函数:

梯度下降

总之

与感知器算法是不是很相似!

感知器跟梯度下降算法中,分类错误的点都希望告诉直线靠近点,因为最终都希望穿过这个点,使直线分类正确

但是对于分类正确的点:

感知器算法就会告诉直线什么都不要做

梯度下降中,分类正确的点会告诉直线离得远点

 

神经网络的构建:

将bias当作单独的节点:

多层级:

多个输入:

多个输出:多分类

多个隐藏层:深度神经网络

 

注:sigmoid 函数有一个完美的导数:

 

池化层总的来说是用来:减小输出大小、避免过拟合

降低过拟合是减小输出大小的结果,它同样也减少了后续层中的参数的数量。

近期,池化层并不是很受青睐。

部分原因是:

现在的数据集又大又复杂,我们更关心欠拟合问题。

Dropout是一个更好的正则化方法。

池化导致信息损失。想想最大池化的例子,n个数字中我们只保留最大的,把余下的n-1完全舍弃了。

 

设置

H = height, W = width, D = depth

 

输入维度是 4x4x5 (HxWxD)

滤波器大小 2x2 (HxW)

stride 的高和宽都是 2 (S)

新的高和宽的公式是:

new_height = (input_height - filter_height)/S + 1

new_width = (input_width - filter_width)/S + 1

池化层输出的维度大小是2x2x5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值