梯度

Machine Learning第二课

爷,独闯天下 提交于 2020-02-14 04:22:19
本节课的主题 ( 1 ) Linear Regression ( 2 ) Gradient Descent ( 3 ) Normal Equation l Linear Regression 这节课用一个房价预测的例子来完整的过一遍有监督机器学习中预测模型的数学基础和数学理论支持。 首先先约定公式中的 Notation : m 训练集合中的样本个数 x 输入变量或特征 y 输出变量或目标结果 (x,y) 表示一个样本 ( ) 表示第i个样本 然后我们来看房价预测的例子,假设我们已知房子的大小以及其对应的价格,那么我们可以在二维空间上做出下面的图示。 问题是给出某个 size 预测对应的 price ,对于这个问题,根据上节课学到的知识,我们知道这是一个有监督学习问题,因为每个样本中都有明确的输入和输出,同时它又是一个回归问题,我们需要预测出一个实数,一个 price 值。确定了问题的一些特征后,我们接下来一个重要的工作便是考虑用什么数学模型或者 hypothesis 来表示这个问题。 而这个问题,我们如何来表示 h ?我们发现图中的点似乎都逼近于一条直线 ( 当然更像是一个二次函数 ) ,然后我们尝试用最简单的数学模型: 线性模型来表示这个 h ,所以 如果我们发现还有其他输入如房间个数,那么线性方程则变为 ,我们可以假设 =1 ,所以 那么我们的问题就转化为,根据已有的 (x,y

【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

<转>Logistic回归总结

不打扰是莪最后的温柔 提交于 2020-02-13 20:47:37
转自 http://blog.csdn.net/dongtingzhizi/article/details/15962797 当我第一遍看完台大的机器学习的视频的时候,我以为我理解了逻辑回归,可后来越看越迷糊,直到看到了这篇文章,豁然开朗 基本原理 Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以简单的描述为这样的过程: (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为 h 函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果。这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的“大概”形式,比如是线性函数还是非线性函数。 (2)构造一个Cost函数(损失函数),该函数表示预测的输出( h )与训练数据类别( y )之间的偏差,可以是二者之间的差( h-y )或者是其他的形式。综合考虑所有训练数据的“损失”,将Cost求和或者求平均,记为 J(θ) 函数,表示所有训练数据预测值与实际类别的偏差。 (3)显然, J(θ) 函数的值越小表示预测函数越准确(即 h 函数越准确),所以这一步需要做的是找到 J(θ)函数的最小值。找函数的最小值有不同的方法,Logistic Regression实现时有的是梯度下降法(Gradient

讲透机器学习中的梯度下降

假装没事ソ 提交于 2020-02-12 09:58:31
本文始发于个人公众号: TechFlow,原创不易,求个关注 在之前的文章当中,我们一起推导了 线性回归 的公式,今天我们继续来学习上次没有结束的内容。 上次我们推导完了公式的时候,曾经说过由于有许多的问题,比如最主要的复杂度问题。随着样本和特征数量的增大,通过公式求解的时间会急剧增大,并且如果特征为空,还会出现公式无法计算的情况。所以和直接公式求解相比,实际当中更倾向于使用另外一种方法来代替,它就是今天这篇文章的主角——梯度下降法。 梯度下降法可以说是机器学习和深度学习当中最重要的方法,可以说是没有之一。尤其是在深度学习当中,几乎清一色所有的神经网络都是使用梯度下降法来训练的。那么,梯度下降法究竟是一种什么样的方法呢,让我们先从梯度的定义开始。 梯度的定义 我们先来看看维基百科当中的定义:梯度(gradient)是一种关于多元导数的概括。平常的一元(单变量)函数的导数是标量值函数,而多元函数的梯度是向量值函数。多元可微函数 \({\displaystyle f}\) 在点 \({\displaystyle P}\) 上的梯度,是以 \({\displaystyle f}\) 在 \({\displaystyle P}\) 上的偏导数为分量的向量。 这句话很精炼,但是不一定容易理解,我们一点一点来看。我们之前高中学过导数,但是高中时候计算的求导往往针对的是一元函数

动手学深度学习之预备知识(MXNET)

馋奶兔 提交于 2020-02-11 17:10:09
动手学深度学习之预备知识(MXNET) 文章目录 动手学深度学习之预备知识(MXNET) 1、数据操作 2、自动求取梯度 3、查阅文档 3.1 查找模块里的所有函数和类 3.2 查找特定函数和类的使用 1、数据操作 MXNET中NDArray类:存储和变换数据的主要工具,提供GPU计算和自动求梯度功能,与NumPy的多维数组类似。 导入模块也称作包含的头文件(nd是ndarray的缩写) from mxnet import nd arange函数创建行向量 shape属性获取NDArray实例的形状(维度) size属性得到NDArray实例中元素的总数 reshape函数修改形状为矩阵 X = x . reshape ( ( 3 , 4 ) ) #生成3*4的矩阵 nd . zeros ( ( 2 , 3 , 4 ) ) #生成两组3*4的矩阵,各个元素都为0 nd . ones ( 3 , 4 ) #生成元素为1的矩阵 随机生成NDArray中每个元素的值 nd . random . normal ( 0 , 1 , shape = ( 3 , 4 ) ) #均值为0,方差为1的正态分布3*4矩阵 支持加减乘除指数等运算(乘法为对应元素相乘) 矩阵乘法(需要保证维度一致) nd . dot ( X , Y . T ) nd . concat ( X , Y , dim = 0

监督式机器学习

浪尽此生 提交于 2020-02-09 21:15:33
1、知识点:        1.1、标签:我们要预测的真实事物:y 即线性回归中的变量y值        特征:指用于描述数据的输入变量:x 即线性回归中的{x1,x2,。。。,xn}变量        样本:指诗句的特定实例:x          有标签样本:{特征,标签}:{x,y} 用于训练模型          无标签样本: {特征,?}:{x,?} 用于对新数据做出预测        模型:可将样本映射到预测标签:y' 由模型的内部参数定义,这些内部参数值是通过学习得到的     1.2、训练:表示通过“有标签样本”来学习(确定)所有权重和偏差的理想值 【y = k*x+b】 ,确定k和b的值         在监督式学习中,机器学习算法通过以下方式构建模型:           检查多个样本并尝试找出可最大限度地减少损失的模型,这一过程叫做“经验风险最小化”       损失:是对糟糕预测的惩罚,损失是一个数值,表示对于 单个样本 而言模型预测的准确程度           如果模型的预测完全准确,则损失为零,否则损失会比较大           训练模型的目标是从所有样本中找到一组“平均损失”较小的权重和偏差           定义损失函数:                  1.3、模型训练: 首先对权重w和偏差b进行初始猜测,然后反复调整这些猜测

线性回归方程推导

扶醉桌前 提交于 2020-02-09 13:25:28
https://blog.csdn.net/joob000/article/details/81295144 理论推导   机器学习所针对的问题有两种:一种是回归,一种是分类。回归是解决连续数据的预测问题,而分类是解决离散数据的预测问题。线性回归是一个典型的回归问题。其实我们在中学时期就接触过,叫最小二乘法。   线性回归试图学得一个线性模型以尽可能准确地预测输出结果。   先从简单的模型看起:   首先,我们只考虑单组变量的情况,有: 使得   假设有m个数据,我们希望通过x预测的结果f(x)来估计y。其中w和b都是线性回归模型的参数。   为了能更好地预测出结果,我们希望自己预测的结果f(x)与y的差值尽可能地小,所以我们可以写出代价函数(cost function)如下:   接着代入f(x)的公式可以得到:   不难看出,这里的代价函数表示的是预测值f(x)与实际值y之间的误差的平方。它对应了常用的欧几里得距离简称“欧氏距离”。基于均方误差最小化来求解模型的方法我们叫做“最小二乘法”。在线性回归中,最小二乘法实质上就是找到一条直线,使所有样本数据到该直线的欧式距离之和最小,即误差最小。   我们希望这个代价函数能有最小值,那么就分别对其求w和b的偏导,使其等于0,求解方程。   先求偏导,得到下面两个式子:   很明显,公式中的参数m,b,w都与i无关,简化时可以直接提出来

机器学习基石10-Logistic Regression

烈酒焚心 提交于 2020-02-09 05:50:04
注: 文章中所有的图片均来自台湾大学林轩田《机器学习基石》课程。 笔记原作者:红色石头 微信公众号:AI有道 上一节课介绍了Linear Regression线性回归,用均方误差来寻找最佳的权重向量 \(w\) ,获得最好的线性预测。本节课将介绍Logistic Regression逻辑回归问题。 一、Logistic Regression Problem 一个心脏病预测的问题:根据患者的年龄、血压、体重等信息,来预测患者是否会有心脏病。很明显这是一个二分类问题,其输出 \(y\) 只有 \({0,1}\) 两种情况。 二元分类,一般情况下,理想的目标函数 \(f(x)>0.5\) ,则判断为正类 \(1\) ;若 \(f(x)<0.5\) ,则判断为负类 \(-1\) 。 但是,如果我们想知道的不是患者有没有心脏病,而是到底患者有多大的几率是心脏病。这表示,我们更关心的是目标函数的值(分布在0,1之间),表示是正类的概率(正类表示是心脏病)。这跟我们原来讨论的二分类问题不太一样,我们把这个问题称为软性二分类问题('soft' binary classification)。这个值越接近 \(1\) ,表示正类的可能性越大;越接近 \(0\) ,表示负类的可能性越大。 对于软性二分类问题,理想的数据是分布在 \([0,1]\) 之间的具体值,但是实际中的数据只可能是 \(0\) 或者

图像处理

与世无争的帅哥 提交于 2020-02-09 01:41:57
# -*- coding: utf-8 -*- """ Created on Mon Sep 24 18:23:04 2018 @author: zy """ # 代码来源GitHub:https://github.com/PENGZhaoqing/Hog-feature # https://blog.csdn.net/ppp8300885/article/details/71078555 # https://www.leiphone.com/news/201708/ZKsGd2JRKr766wEd.html import cv2 import numpy as np import math import matplotlib.pyplot as plt class Hog_descriptor(): ''' HOG描述符的实现 ''' def __init__(self, img, cell_size=8, bin_size=36): ''' 构造函数 默认参数,一个block由2x2个cell组成,步长为1个cell大小 args: img:输入图像(更准确的说是检测窗口),这里要求为灰度图像 对于行人检测图像大小一般为128x64 即是输入图像上的一小块裁切区域 cell_size:细胞单元的大小 如8,表示8x8个像素 bin_size:直方图的bin个数 ''' self

【TensorFlow2.x系列第3篇】TensorFlow2.0-深度学习中的激活函数

假装没事ソ 提交于 2020-02-08 10:15:58
对于激活函数的应用是比较熟悉和频繁的,但一直以来没有系统性地把深度学习中地激活函数做一个总结,因此小知同学特地对常用的激活函数做一个比较全面的总结, 在讲述理论的同时,也根据激活函数的公式进行编程实现 激活函数概念 所谓激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。 什么是激活函数 激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增 加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。 为什么使用激活函数 如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。 如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。 个人认知与理解 我觉得机器学习的传统算法与深度学习算法的比较重要的区别是: 从广义上来讲