美文网首页
线性单元和梯度下降

线性单元和梯度下降

作者: Thinkando | 来源:发表于2018-11-25 18:15 被阅读59次

1. 为什么引入

  • 感知器有一个问题,当面对的数据集不是线性可分的时候,『感知器规则』可能无法收敛,这意味着我们永远也无法完成一个感知器的训练。为了解决这个问题,我们使用一个可导的线性函数来替代感知器的阶跃函数,这种感知器就叫做线性单元。线性单元在面对线性不可分的数据集时,会收敛到一个最佳的近似上。
  • 这样替换了激活函数之后,线性单元将返回一个实数值而不是0,1分类。因此线性单元用来解决回归问题而不是分类问题。

2. 线性单元的模型

image.png
image.png

3. 监督学习和无监督学习

image.png

4. 线性单元的目标函数

image.png
image.png

5. 梯度下降优化算法

image.png
image.png
image.png
image.png
image.png

6. 随机梯度下降算法(Stochastic Gradient Descent, SGD)

image.png

6. python 实现

image.png
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import matplotlib.pyplot as plt
from perceptron import Perceptron


#定义激活函数f
f = lambda x: x

class LinearUnit(Perceptron):
    def __init__(self, input_num):
        '''初始化线性单元,设置输入参数的个数'''
        Perceptron.__init__(self, input_num, f)


def get_training_dataset():
    '''
    捏造5个人的收入数据
    '''
    # 构建训练数据
    # 输入向量列表,每一项是工作年限
    input_vecs = [[5], [3], [8], [1.4], [10.1]]
    # 期望的输出列表,月薪,注意要与输入一一对应
    labels = [5500, 2300, 7600, 1800, 11400]
    return input_vecs, labels    


def train_linear_unit():
    '''
    使用数据训练线性单元
    '''
    # 创建感知器,输入参数的特征数为1(工作年限)
    lu = LinearUnit(1)
    # 训练,迭代10轮, 学习速率为0.01
    input_vecs, labels = get_training_dataset()
    lu.train(input_vecs, labels, 10, 0.01)
    #返回训练好的线性单元
    return lu


def plot(linear_unit):
    input_vecs, labels = get_training_dataset()
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(list(map(lambda x: x[0], input_vecs)), labels)
    weights = linear_unit.weights
    bias = linear_unit.bias
    x = range(0,12,1)
    y = list(map(lambda x:weights[0] * x + bias, x))
    ax.plot(x, y)
    plt.show()


if __name__ == '__main__': 
    '''训练线性单元'''
    linear_unit = train_linear_unit()
    # 打印训练获得的权重
    print (linear_unit)
    # 测试
    print ('Work 3.4 years, monthly salary = %.2f' % linear_unit.predict([3.4]))
    print ('Work 15 years, monthly salary = %.2f' % linear_unit.predict([15]))
    print ('Work 1.5 years, monthly salary = %.2f' % linear_unit.predict([1.5]))
    print ('Work 6.3 years, monthly salary = %.2f' % linear_unit.predict([6.3]))
    plot(linear_unit)

相关文章

  • 线性单元和梯度下降

    1. 为什么引入 感知器有一个问题,当面对的数据集不是线性可分的时候,『感知器规则』可能无法收敛,这意味着我们永远...

  • 线性单元与梯度下降

    什么是线性单元 感知器存在一个问题,即数据集不是线性可分的时候,“感知器规则”可能无法收敛,可能永远无法完成感知器...

  • ML-梯度下降代码-线性回归为例

    梯度下降代码线性回归为例 bgd 批量梯度下降 sbd 随机梯度下降 mbfd 小批量随机梯度下降

  • 梯度下降

    线性回归 梯度下降

  • 用人话讲明白梯度下降Gradient Descent(以求解多元

    文章目录1.梯度2.多元线性回归参数求解3.梯度下降4.梯度下降法求解多元线性回归 梯度下降算法在机器学习中出现频...

  • 2020-08-19--梯度下降法01

    梯度下降法简介 多元线性回归中的梯度下降法 随机梯度下降法 梯度下降法 的调试 1.梯度下降法简介 不是一个机器学...

  • 2019-04-13

    目录 假设函数概念 线性假设类损失函数 梯度下降和随机梯度下降 矩阵迹的倒数 正规方程法解线性假设函数最优参数 1...

  • 机器学习系列(十六)——随机梯度下降Stochastic Gra

    随机梯度下降法Stochastic Gradient Descent 在之前的梯度下降法解决线性回归问题中,梯度向...

  • 深度学习-序

    文章列表 (1) 深度学习-感知器(2)线性单元和梯度下降(3)神经网络和反向传播算法(4)卷积神经网络(5)循环...

  • 第2章 单变量&多变量线性回归

    单变量线性回归 梯度下降法 Gradient descent 用梯度下降法最小化代价函数J 多变量线性回归 mul...

网友评论

      本文标题:线性单元和梯度下降

      本文链接:https://www.haomeiwen.com/subject/bdnpqqtx.html