sigmoid

动手学深度学习——多层感知机

对着背影说爱祢 提交于 2020-02-15 10:35:21
多层感知机 多层感知机是一种简单的神经网络,包含输入层、隐藏层以及输出层。如下图所示。 多层感知机的计算过程 输入层为小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,批量大小为 n n n ,输入个数为 d d d 。上述图的多层感知机为单隐藏层,隐藏层输出为 H H H , H ∈ R n × h \boldsymbol{H} \in \mathbb{R}^{n \times h} H ∈ R n × h , h h h 为隐藏层单元个数。网络各层之间全连接,设隐藏层的权重参数和偏差参数分别为 W h ∈ R d × h \boldsymbol{W}_{h} \in \mathbb{R}^{d \times h} W h ​ ∈ R d × h , b h ∈ R 1 × h \boldsymbol{b}_{h} \in \mathbb{R}^{1 \times h} b h ​ ∈ R 1 × h 。输出层的权重和偏差参数分别为 W o ∈ R h × q \boldsymbol{W}_{o} \in \mathbb{R}^{h \times q} W o ​ ∈ R h × q , b o ∈ R 1 × h \boldsymbol{b}_{o} \in \mathbb{R}^

学习笔记2-多层感知机(multilayer perceptron,MLP)

假如想象 提交于 2020-02-15 09:04:10
学习笔记2-多层感知机(multilayer perceptron,MLP) 1、理论基础 1.1 多层感知机的基本公式和原理 多层感知机就是含有至少一个隐藏层的由全连接层组成的神经网络,且每个隐藏层的输出通过激活函数进行变换。多层感知机的层数和各隐藏层中隐藏单元个数都是超参数。以单隐藏层为例并沿用本节之前定义的符号,多层感知机按以下方式计算输出: H = ϕ ( X W h + b h ) , O = H W o + b o , \begin{aligned} \boldsymbol{H} &= \phi(\boldsymbol{X} \boldsymbol{W}_h + \boldsymbol{b}_h),\\ \boldsymbol{O} &= \boldsymbol{H} \boldsymbol{W}_o + \boldsymbol{b}_o, \end{aligned} H O ​ = ϕ ( X W h ​ + b h ​ ) , = H W o ​ + b o ​ , ​ 其中 ϕ \phi ϕ 表示激活函数。 1.2 表达公式 具体来说,给定一个小批量样本 X ∈ R n × d \boldsymbol{X} \in \mathbb{R}^{n \times d} X ∈ R n × d ,其批量大小为 n n n ,输入个数为 d d d

深度学习 day1

空扰寡人 提交于 2020-02-15 08:28:49
书籍链接: http://tangshusen.me/Dive-into-DL-PyTorch/#/ 一、线性回归 对于「线性模型」的内容,那我们就来看看「西瓜书」「统计学习方法」「ESL」「PRML」这几本书大概是怎么来讲解这部分内容的。 (1)「西瓜书」 「西瓜书」在第三章中展开了对「线性模型」的讨论,首先是介绍了线性模型「基本形式」,无论是线性回归还是线性分类,都是基于这个基本的线性模型的形式而来。 然后,「西瓜书」介绍了在「基本形式」的基础上,如何来构建「一元线性回归」问题的目标函数,其中的关键点在于如何衡量模型输出的预测值y_hat与数据真实的真实label值y的差距。这里「西瓜书」默认使用了均方误差的距离估计指标,但是我们要知道这并不是唯一的选择。在构建好「一元线性回归」的目标函数后,我们就可以来尝试进行求解了。我们的目标是找到对应的w 和b 使得我们minE()的目标实现,而这里介绍了一种解析解的求法,也就是最小二乘法。 在介绍完一元的情况后,「西瓜书」开始介绍多元的情景,这里值得注意的是(3.10)与(3.11)之间的那个XTX的满秩假设或者正定假设通常是不成立的,因此实际上我们需要在这个地方加入正则化方法,这种方法在我们面对最优化问题的时候也非常常用。 接着,「西瓜书」开始讲解「线性分类」模型。也就是所谓的对数几率回归(log odds)

动手学深度学习之多层感知机

纵饮孤独 提交于 2020-02-15 02:06:41
多层感知机 多层感知机的基本知识 深度学习主要关注多层模型。本节将以多层感知机(multilayer perceptron,MLP)为例,介绍多层神经网络的概念。 隐藏层 下图展示了一个多层感知机的神经网络图,它含有一个隐藏层,该层中有5个隐藏单元。 ###### 表达公式 具体来说,给定一个小批量样本$X\in R^{n\times d}$,其批量大小为$n$,输入个数为$d$。假设多层感知机只有一个隐藏层,其中隐藏单元个数为$h$。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为$H$,有$H\in R^{n\times h}$。因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数分别为$W_h\in R^{d\times h}$和$b_h\in R^{1\times h}$,输出层的权重和偏差参数分别为$W_o\in R^{h\times q}$和$b_o\in R^{1\times q}$。 先来看一种含单隐藏层的多层感知机的设计。其输出 O ∈ R n × q O\in R^{n\times q} O ∈ R n × q 的计算为 H = X W h + b h O = H W o + b o \begin{aligned} H&=XW_h+b_h\\ O&=HW_o+b_o \end{aligned} H O ​ = X W h ​ + b h ​ = H W

学习记录

核能气质少年 提交于 2020-02-15 00:29:30
1.线性回归 线性回归是回归问题中的一种,假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的参数w和b。公式: y^为预测值,自变量x和因变量y是已知的,而我们想实现的是预测新增一个x,其对应的y是多少。因此,为了构建这个函数关系,目标是通过已知数据点,求解线性模型中w和b两个参数。 目标/损失函数 针对任何模型求解问题,都是最终都是可以得到一组预测值y^ ,对比已有的真实值 y ,数据行数为 n ,可以将损失函数定义如下 即预测值与真实值之间的平均的平方距离,统计中一般称其为MAE(mean square error)均方误差。把之前的函数式代入损失函数,并且将需要求解的参数w和b看做是函数L的自变量,可得 现在的任务是求解最小化L时w和b的值, 即核心目标优化式为 求解方式有两种: 1)最小二乘法(least square method) 求解 w 和 b 是使损失函数最小化的过程,在统计中,称为线性回归模型的最小二乘“参数估计”(parameter estimation)。我们可以将 L(w,b) 分别对 w 和 b 求导,得到 令上述两式为0,可得到 w 和 b 最优解的闭式(closed-form)解: 梯度下降(gradient descent) 梯度下降核心内容是对自变量进行不断的更新(针对w和b求偏导)

动手学深度学习---多层感知机

僤鯓⒐⒋嵵緔 提交于 2020-02-14 18:01:09
多层感知机 线性回归和 softmax 回归是单层神经网络。多层感知机 (multilayer perceptron,MLP) 是多层神经网络。如图展示了一个多层感知机的神经网络图。 该网络输入和输出个数分别为4和3, 含有一个隐藏层 ,该层中有5个隐藏单元。输入层不涉及计算,图中多层感知机的层数为2。其中隐藏层中的神经元和输入层中各个输入完全连接,输出层中的神经元和隐藏层中的各个神经元也完全连接。因此,多层感知机中的隐藏层和输出层都是全连接层。 具体来说,给定一个小批量样本 X∈R^(n×d) ,其批量大小为 n ,输入个数为 d 。假设多层感知机只有一个隐藏层,其中隐藏单元个数为 h 。记隐藏层的输出(也称为隐藏层变量或隐藏变量)为 H ,有 H∈R^(n×h) 。因为隐藏层和输出层均是全连接层,可以设隐藏层的权重参数和偏差参数为 Wh∈R^(d×h)和 bh∈R^(1×h) ,输出层的权重和偏差参数分别为 Wo∈R^(h×q) 和 bo∈R^(1×q) 。 含单隐藏层的多层感知机的设计。其输出 O∈R^(n×q) 的计算为: 也就是将隐藏层的输出直接作为输出层的输入。如果将以上两个式子联立起来,可以得到: 从联立后的式子可以看出,虽然神经网络引入了隐藏层,却依然等价于一个单层神经网络:其中输出层权重参数为 WhWo ,偏差参数为 bhWo+bo 。不难发现

逻辑回归分类python实现模板

落爺英雄遲暮 提交于 2020-02-14 11:55:06
算法的思路我就不说了,我就提供一个万能模板,适用于任何纬度数据集。 虽然代码类似于梯度下降,但他是个分类算法 定义sigmoid函数 def sigmoid ( x ) : return 1 / ( 1 + np . exp ( - x ) ) 进行逻辑回归的参数设置以及迭代 def weights ( x , y , alpha , thershold ) : #初始化参数 m , n = x_train . shape theta = np . random . rand ( n ) #参数 cnt = 0 # 迭代次数 max_iter = 50000 #开始迭代 while cnt < max_iter : cnt += 1 diff = np . full ( n , 0 ) for i in range ( m ) : diff = ( y [ i ] - sigmoid ( theta . T @ x [ i ] ) ) * x [ i ] theta = theta + alpha * diff if ( abs ( diff ) < thershold ) . all ( ) : break return theta 预测函数 def predict ( x_test , theta ) : if sigmoid ( theta . T @ x_test ) >

【机器学习】逻辑回归

折月煮酒 提交于 2020-02-14 01:30:46
logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。 sigmoid函数 通过sigmoid函数,可以将任何实数值转换为区间为【0,1】之间值相应的值就符合了概率对应的值域 import numpy as np from matplotlib import pyplot as plt # 定义sigmoid函数 def sigmoid ( t ) : return 1 / ( 1 + np . exp ( - t ) ) x = np . linspace ( - 10 , 10 , 1000 ) y = sigmoid ( x ) plt . plot ( x , y ) plt . show ( ) 逻辑回归损失函数:表征模型预测值与真实值的不一致程度。 损失函数为什么选择用交叉验证。原因是平方损失在训练的时候会出现一定的问题。当预测值与真实值之间的差距过大时,这时候参数的调整就需要变大,但是如果使用平方损失,训练的时候可能看到的情况是预测值和真实值之间的差距越大,参数调整的越小,训练的越慢。 from sklearn import datasets iris = datasets . load_iris ( ) x = iris .

【Machine Learning in Action --5】逻辑回归(LogisticRegression)

邮差的信 提交于 2020-02-13 20:49:53
1、概述   Logistic regression(逻辑回归)是当前业界比较常用的机器学习方法,用于估计某种事物的可能性。   在经典之作《数学之美》中也看到了它用于广告预测,也就是根据某广告被用 户点击的可能性,把最可能被用户点击的广告摆在用户能看到的地方,然后叫他“你点我啊!”用户点了,你就有钱收了。这就是为什么我们的电脑现在广告泛滥的 原因。还有类似的某用户购买某商品的可能性,某病人患有某种疾病的可能性啊等等。这个世界是随机的(当然了,人为的确定性系统除外,但也有可能有噪声或产生错误的结果,只是这个错误发生的可能性太小了,小到千万年不遇,小到忽略不计而已),所以万物的发生都可以用可能性或者几率(Odds)来表达。“几率”指的是某事物发生的可能性与不发生的可能性的比值。 Logistic regression可以用来回归,也可以用来分类,主要是二分类。 2、基本理论 2.1Logistic regression和Sigmoid函数   回归:假设现在有一些数据点,我们用一条直线对这些点进行拟合(该条称为最佳拟合直线),这个拟合过程就称作回归。利用Logistic回归进行分类的思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。这里的“回归”一词源于最佳拟合,表示找到最佳拟合参数,使用的是最优化算法。   Sigmoid函数具体的计算公式如下:         z=w

零基础入门篇使用Python搭建点击率预估模型

坚强是说给别人听的谎言 提交于 2020-02-12 03:48:59
本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题。感兴趣的朋友跟随小白一起看看吧 点击率预估模型 0.前言 本篇是一个基础机器学习入门篇文章,帮助我们熟悉机器学习中的神经网络结构与使用。 日常中习惯于使用Python各种成熟的机器学习工具包,例如sklearn、TensorFlow等等,来快速搭建各种各样的机器学习模型来解决各种业务问题。 本文将从零开始,仅仅利用基础的numpy库,使用Python实现一个最简单的神经网络(或者说是简易的LR,因为LR就是一个单层的神经网络),解决一个点击率预估的问题。 1.假设一个业务场景 声明:为了简单起见,下面的一切设定从简…. 定义需要解决的问题: 老板:小李,这台机器上有一批微博的点击日志数据,你拿去分析一下,然后搞点击率预测啥的… 是的,就是预测一篇微博是否会被用户点击(被点击的概率)……预测未来,貌似很神奇的样子! 热门微博 简单的介绍一下加深的业务数据 每一条微博数据有由三部分构成: {微博id, 微博特征X, 微博点击标志Y} 微博特征X有三个维度: X={x0="该微博有娱乐明星”,x1="该微博有图”,x2="该微博有表情”} 微博是否被点击过的标志Y: Y={y0=“点击”, y1=“未点击”} 数据有了