神经网络学习笔记

神经网络是机器学习中的一个模型,可以用于两类问题的解答:
分类:把数据划分成不同的类别
回归:建立数据间的连续关系

感知器算法->误差函数(梯度下降)
离散误差与连续误差
要使用梯度下降,误差必须是连续的,误差函数必须是可微分的

离散算法:学生是否被录取->连续算法:学生被录取概率
激活函数: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_§
return -np.sum(Y * np.ln§ + (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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值