【深度学习】logistic回归模型

目录

神经网络

数据、符号准备:

logistic回归:

损失函数和代价函数:

梯度下降法:

向量化:


神经网络

我们学习深度学习的目的就是用于去训练神经网络,而神经网络是什么呢?我们先来看下面一个基础的生物上的神经元的图片。

通常来说,神经元就是处理信息的基础单位,神经元一端传来电信号,经历中间的处理后会输出新的信号,所以总的来说神经元一个信号处理中心。而神经网络就是多个神经元组成的网络,它可以接收不仅一个输入,它也可以不只有一个输出,并且它们还可以堆叠,这样大大增强数据处理能力。而我们深度学习的神经网络系统就起到相似的作用:接收我们输入的数据,在我们预设的系统下执行完输出结果,而这个神经系统也不是一开始就存在的,它需要我们给予它一些数据去训练它,拟合出一套最适合的映射系统。

数据、符号:

在深度学习中,我们需要输入数据才能去训练输出数据,而我们需要先去处理这些输入的数据与符号。下面与如何表示一张三通道图片为例(事实上三通道图可以涵盖我们日常中的很多图片)。

对于三通道图片中的三个矩阵,我们可以用一个x的特征向量来表示:\begin{bmatrix} 255\\ 231\\ ...\\ 142 \end{bmatrix}这个特征向量x就能包含里面的所有像素点。它的大小n_{x}n,在这里就是5 x 4 x 3。5表示5行、4表示4列、3表示三个通道。而我们的训练集中不只有一张图(例如三张图),所以我们还需要用一个X的矩阵来代表所有的图\begin{bmatrix} |& |& | \\ x_{1}&x_{2} &x_{3} \\ |& | & | \end{bmatrix} 。这个矩阵的列数就是训练集x的个数,即图片的个数m。而对于输出,例如我们需要做的是一个二分类问题,此时我们的输出就是0或1的标志。那么我们需要的输出y对应的就是一个m列的矩阵\begin{bmatrix} y_{1} &y_{2} &y_{3} \end{bmatrix}

logistic回归:

回到之前的二分类例子,我们有m张图片,并且获取了这些图片的特征向量的矩阵,我们需要判断这些图片中是否满足我们某个要求,如是否含有猫🐱这种动物。那么此时我们的每张图片传进模型后的输出就是一个概率。因为概率的大小都是趋于0到1之间的,此时我们就不能利用简单的线性回归来作为输出。我们可以考虑使用logistic回归。logistic回归函数的参数也是一个大小为n的向量,它可以看成是对应每个像素的权重,并且还含有一个b的标量表示偏移。而要实现逻辑回归就需要控制y的输出位于0到1之间,这里利用的方法是使用sigmoid函数,它可以将输出y控制到0-1之间,sigmoid函数如下:

它的函数表达式是:y=\frac{1}{1+e^{-x}},我们可以看到这个函数将输出控制在0-1之间。此时我们的logistic回归的表达式就是:\widehat{y}=\sigma (W^{^{T}}x+b),\sigma (x)=\frac{1}{1+e^{-x}}

损失函数和代价函数:

上面我们讨论了logistic回归,我们的目的是要使用这个回归来得到预测输出y,但是我们知道,我们需要一个标准来衡量我们的输出是否好,即训练值中的输出和预测是否一致。而这个衡量标准就是损失函数。对于单个样本,我们定义一个函数loss来计算真实值和预测值的误差:loss = ylog(y\hat{})+(1-y)log(1-y\hat{})

当然,你也可以定义一些别的函数作为损失函数,比如loss = \frac{(y-y\widehat{})^{2}}{2}就是我们常见的表示数据之间拟合度的函数,不过这些函数会在后面我们拟合时不好拟合,所以我们选择了之前的损失函数。

我们之前使用的loss损失函数只能说是某个样本的拟合情况,而我们需要统计的是对于整个数据集中对应的所有数据的损失函数,我们利用符号J来表示这个函数,这个函数叫做代价函数。J就直接与我们需要训练的W和b相关:J(W,b) =\frac{1}{m}\sum_{0}^{m}loss(y,y\hat{})

梯度下降法:

之前我们看了代价函数J,我们的目的是需要让它能够变得最少。我们采用的方法就是梯度下降法,即通过求导数的方式将其一步步变化以达到最优解。而我们对于两个变量w和b的处理方式是

w = w - \alpha \frac{\partial J}{\partial w}

b = b - \alpha \frac{\partial J}{\partial b}

上面的两条式子就是用于计算最符合条件(J最小)时的w和b。我们需要变化w和b,使其不断接近最优解,其中式子中的\alpha是代表学习率,它的意义是控制w每次变化时变化的步长,而偏导就是控制每次变化的方向。其实就是下图所示从某点开始逐渐往w,b最小的位置移动。

 关于梯度下降我们常用得到求导方法是链式法则

例如我们的训练参数只有W1,W2,输入量是X1和X2。我们需要的是J对b、W1和W2进行求导,而这个过程无疑是一个循序渐进的求导过程,因为输出结果到输入结果之间隔着很多中间量,所以我们求导的时候一般都需要使用到链式法则。

我们先从一个样本开始:先算出这个样本的预测值y\hat{}(a),我们知道:y\hat{}=\sigma (w^{T}x+b),跟据y\hat{}我们可以得到损失函数loss(y,y\hat{}),loss = ylog(y\hat{})+(1-y)log(1-y\hat{}),之后我们可以根据链式法则倒过来求出\frac{dl}{dw_{1}} = (a-y^{1})x_{1},而b和W2也类似。具体过程如下:

过程

在得到损失函数后我们就可以进一步求出J(W,b) =\frac{1}{m}\sum_{0}^{m}loss(y,y\hat{})

向量化:

我们知道,在我们进行深度学习时,我们需要使用的数据往往是大量的,就如我们需要计算的损失函数一样,我们需要有m个数据进行处理,并且每个数据可能都有n个特征值,所以我们遍历这些数据时就不能使用for循环这种低效率的方法,我们需要使用到新的方法:向量化。向量化的意思是我们将这些数据变成矩阵运算(例如numpy和Pytorch中的矩阵运算),这样数据运算处理就可以提高效率。

以我们数据集里有m个图片,每个数据的特征向量为n为例,对于单个图片的线性预测方程的解是z = w_{1}x_{_{1}}+w_{2}x_{2}+w_{3}x_{3}+...+w_{n}x_{n}+b。并且我们还要计算m个z的数值,这里利用for循环计算的效率不高,所以采用矩阵的计算方式。具体是将所有的x放到一个矩阵中:X=\begin{bmatrix} |& |& | \\ x_{1}&x_{2} &x_{3} \\ |& | & | \end{bmatrix}。这个矩阵大小为m x n,这也就代表着一列代表一张图片的特征向量,列数就代表着图片的个数。然后我们将w设计为一个n x 1的向量:w^{T} = \begin{bmatrix} w_{1} &w_{2} &.. &w_{ n} \end{bmatrix},那么w_{1}x_{_{1}}+w_{2}x_{2}+w_{3}x_{3}+...+w_{n}x_{n}就可以表示为:Z = w^{T}X\begin{bmatrix} w_{1}x_{_{1}}^{1}+w_{2}x_{2}^{1}+...+w_{n}x_{n}^{1}&w_{1}x_{_{1}}^{2}+w_{2}x_{2}^{2}+...+w_{n}x_{n}^{2} & ... &w_{1}x_{_{1}}^{m}+w_{2}x_{2}^{m}+...+w_{n}x_{n}^{m} \end{bmatrix}。后面只需要再设计一个b的大小为1 x m的向量与之前的w^{T}X相加即可。这样就可以得到回归预测函数的输出向量Z,后面我们将其带入到激活函数sigmoid后就可以得到预测的输出a。值得注意的是,对于我们之前设计的对于m个样本每个都使用for循环进行一次计算的方法我们也可以将其转换为向量化计算:对于\frac{dJ}{db},我们由上面的链式法则知道是\frac{1}{m}\sum_{0}^{m}dz_{i},这也就代表着我们还有一个循环需要向量化,遍历整个数据集。这里我们可以使用向量化的操作:\frac{dJ}{db}=\frac{1}{m}torch.sum(dZ)即使用Pytorch里的矩阵求和求和操作来计算。同理w也可以化为:\frac{dJ}{dw_{i}}=\frac{1}{m}XdZ^{T},这里的Z转置是为了计算。我们可以大致看看结果:X是一个n行m列n x m的矩阵,Z我们求出来是一个1 x m的行向量。这两个相乘就可以得到一个n x 1的矩阵,它的每一行就代表w_{i}在这m个样本中的累计值。


参考资料:

[双语字幕]吴恩达深度学习deeplearning.ai_哔哩哔哩_bilibili

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 深度学习的回归模型是用来预测连续值的模型。典型的例子是房价预测。假设我们想要预测一个房子的价格,我们可以收集这个房子的很多信息,比如:房子面积、房子所在城市、房子的年代、房子房间数量等。这些信息就是特征。我们可以用深度学习的回归模型来根据这些特征来预测房子的价格。 举个例子,假设我们有一个数据集,包含了每个房子的价格和这些特征。我们可以训练一个深度学习模型来学习这个数据集,让它学会根据这些特征来预测房子的价格。然后,当我们有一个新的房子的特征时,就可以使用这个模型来预测这个房子的价格了。 ### 回答2: 深度学习回归模型是一种通过训练数据来预测连续输出变量的方法。下面我来举一个例子来说明深度学习回归模型的应用。 以房价预测为例,假设有一个数据集,包含了不同房子的面积、房间数量和位置等等特征,以及对应的房价作为目标变量。我们想通过这些特征来训练一个深度学习回归模型,能够对新的房子给出一个合理的价格预测。 首先,我们将数据集划分为训练集和测试集,训练集用于模型训练,测试集用于评估模型性能。然后,我们构建一个深度神经网络模型,包括输入层、隐藏层和输出层。输入层接受特征数据作为输入,隐藏层包含多个神经元,每个神经元用于学习不同的特征权重和偏置。输出层则用于预测目标变量房价。 接下来,我们使用训练集来训练模型。通过反向传播算法和梯度下降优化器,模型逐渐调整隐藏层中神经元的权重和偏置,使得模型的预测结果与实际房价数据的误差最小化。这个训练过程可以迭代多次,直到模型收敛或达到最大迭代次数。 训练完成后,我们使用测试集来评估模型的性能。通过将测试集中的特征输入到已经训练好的模型中,得到预测的房价。然后,与测试集中的实际房价进行比较,计算模型的预测误差,如均方根误差等指标。 最后,我们可以使用这个已经训练好的模型来预测新的房子的价格。将新房子的特征输入模型中,可以得到相应的预测结果,从而为房主或买家提供一个参考价格。 这就是一个简单的深度学习回归模型的例子,它可以通过训练数据来学习输入特征与输出变量之间的关系,并且能够用于预测新的未知数据。深度学习回归模型在许多领域中有广泛的应用,如金融、医疗、自然语言处理等。 ### 回答3: 深度学习是一种机器学习方法,以多层神经网络为基础。回归模型深度学习的一种常见应用,旨在预测连续数值输出。下面以房价预测为例,介绍深度学习回归模型的应用。 在房价预测中,我们可以使用深度学习模型来根据房屋的各种特征(如面积、位置、房间数等)来预测房价。 首先,我们收集一批具有房屋特征和已知价格的数据,称为训练集。我们可以将数据进行预处理,如归一化处理,确保各特征在一定范围内,以避免其中的某些特征对结果的影响过大。 接下来,我们可以构建一个深度学习回归模型模型的输入是房屋的特征向量,输出是预测的房价。模型可以由多个隐藏层组成,每个隐藏层都包含多个神经元,每个神经元与上一层的神经元相连。 为了训练模型,我们需要定义一个损失函数来度量模型的预测与实际值的误差。常见的损失函数可以是均方误差(Mean Squared Error),它对预测值与真实值的差异进行平方,并取平均值。 在训练过程中,我们通过反向传播算法来调整模型中的参数,以最小化损失函数。通过反复迭代优化模型,直到达到预定的训练次数或满足某个停止准则。 训练完成后,我们可以使用模型来预测新房屋的价格。将新房屋的特征输入到模型中,模型根据学习到的参数计算出相应的预测值作为房价的估计。 整个过程可以通过深度学习框架(如TensorFlow、PyTorch等)来实现,这些框架提供了高效的计算以及方便的模型构建和训练接口。 总之,深度学习回归模型可以通过训练数据预测连续数值输出,如房价预测。通过合适的数据处理、模型构建和优化算法,可以有效地应用深度学习回归模型解决实际问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值