Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >权重认知

权重认知

原创
作者头像
Yerik
修改于 2020-06-20 05:37:21
修改于 2020-06-20 05:37:21
2.6K0
举报
文章被收录于专栏:烹饪一朵云烹饪一朵云

在学习梯度下降的时候,尝试自己写代码表达思想,也尝试使用sklearn等等工具协助我们进行学习,深入理解。

不过呢,轮子用的再多,用轮子的人没有完全理解轮子的本质也是白搭,最近就自己整理了开发笔记协助我深入理解,以此文加深记忆。

下图中的点是数据可视化后的结果,我们的目的是通过梯度下降画一条直线将这两种颜色的点分开

数据加载
数据加载

首先是读取数据,将数据集格式化为矩阵

代码语言:txt
AI代码解释
复制
Input = file2matrix("testSet.txt", "\t")
target = Input[:, -1]  # 获取分类标签列表
[m, n] = shape(Input)

此时的Input,target的大小分别为

Input.shape(100, 3)

target.shape(100, 1)

注意到

w^T x+b=0

也代表一条直线,不妨假设X有两个特征x1,x2,那么有

w_1x_1+w_2x_2+b=0 \Rightarrow w_1x_1+w_2x_2+b*1=0 \Rightarrow \begin{bmatrix} w_1 \\ w_2 \\ b \end{bmatrix}^T * \begin{bmatrix} x_1 \\ x_2 \\ 1 \end{bmatrix}

此时代码构造为

代码语言:txt
AI代码解释
复制
dataMat = buildMat(Input)

weights = ones((n, 1))  # 初始化权重向量为1

梯度下降计算

代码语言:txt
AI代码解释
复制
steps = 5000 # 迭代次数
alpha = 0.001234  # 步长

# 主程序
for k in xrange(steps):
    # mat用来将weight的列表转换为矩阵
    gradient = dataMat * mat(weights)
    # sigmoid(wx)
    output = logistic(gradient)  # logistic function
    errors = target - output  # 计算误差
    # .T是简单转置矩阵的意思
    weights = weights + alpha * dataMat.T * errors

这里的步长由我们自己随机设置,业界调侃我等为调参师便是这些充满玄学的随机设置。

代码的数学原理推导起来也是简单,我们不妨简化下我们的数据量为3*2的矩阵,即

公式推导
公式推导

得出参数b和w

代码语言:txt
AI代码解释
复制
y=w*x+b: b:weights[0]/weights[2]; w:weights[1]/weights[2]

代码语言:txt
AI代码解释
复制
Y = -(double(weights[0]) + X * (double(weights[1]))) / double(weights[2])

问题

关于初始化权重向量

我们初始化权重向量的时候,为何默认为1?而不是0或者2?

代码语言:txt
AI代码解释
复制
weights = ones((n, 1))  # 初始化权重向量

当初始化为0,在计算梯度时,gradient为0,后续的计算无意义

代码语言:txt
AI代码解释
复制
gradient = dataMat * mat(weights)

当初始化为-1,在计算梯度时,初始化失败,计算得到权值为[[-208.44200602][ -66.06053372][3143.37196469]]主要到-1会令sigmod函数溢出,此时的直线为

image.png
image.png

当初始化为2,此时的直线为

image.png
image.png

原因是在计算权重的时候,已然被约分

b=\frac{weights[0]}{weights[2]};w=\frac{weights[1]}{weights[2]}

关于权重计算

为何

b=\frac{weights[0]}{weights[2]};w=\frac{weights[1]}{weights[2]}

上面的推断可得

b=\frac{b*(error_1+error_2)}{k_2*error_1+k_4*error_2} w=\frac{k_1*error_1+k3*error_2}{k_2*error_1+k_4*error_2}

显然等式不成立

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
逻辑斯谛回归及其物理含义
先来看看书上逻辑斯谛回归模型的公式吧,再了解公式的情况下,我们再来谈谈它实际的物理含义。吼吼,它貌似蛮有内涵的,也是从生物学上挖过来的一条曲线吧。
用户1147447
2019/05/26
9940
用Numpy搭建神经网络第二期:梯度下降法的实现
最简单的神经网络包含三个要素,输入层,隐藏层以及输出层。关于其工作机理其完全可以类比成一个元函数:Y=W*X+b。即输入数据X,得到输出Y。
大数据文摘
2019/05/30
5660
梯度上升算法与随机梯度上升算法的实现
上一篇日志中,我们最终推导出了计算最优系数的公式。 Logistic 回归数学公式推导
用户3147702
2022/06/27
7430
梯度上升算法与随机梯度上升算法的实现
Python3《机器学习实战》学习笔记(六):Logistic回归基础篇之梯度上升算法
版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://blog.csdn.net/c406495762/article/details/77723333
Jack_Cui
2019/05/25
7510
Logistic回归算法及Python实现
本文将介绍机器学习算法中的Logistic回归分类算法并使用Python进行实现。会接触到**最优化算法**的相关学习。
YingJoy_
2018/03/07
2.7K0
Logistic回归算法及Python实现
Python3《机器学习实战》学习笔记(七):Logistic回归实战篇之预测病马死亡率
版权声明:本文为博主原创文章,未经博主允许不得转载。个人网站:http://cuijiahua.com。 https://blog.csdn.net/c406495762/article/details/77851973
Jack_Cui
2019/05/25
9000
DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
介绍 DeepLearning课程总共五大章节,该系列笔记将按照课程安排进行记录。 另外第一章的前两周的课程在之前的Andrew Ng机器学习课程笔记(博客园)&Andrew Ng机器学习课程笔记
marsggbo
2018/01/23
5980
DeepLearning.ai学习笔记(一)神经网络和深度学习--Week3浅层神经网络
FM算法解析及Python实现
1、特征组合是许多机器学习建模过程中遇到的问题,如果对特征直接建模,很有可能会忽略掉特征与特征之间的关联信息,因此,可以通过构建新的交叉特征这一特征组合方式提高模型的效果。
Bo_hemian
2020/09/09
1.4K0
YJango:深度学习入门
\vec{y}= a(W\cdot\vec{x} + {b}),其中\vec{x}是输入向量,\vec{y}是输出向量,\vec{b}是偏移向量,W是权重矩阵,a()是激活函数。每一层仅仅是把输入\vec{x}经过如此简单的操作得到\vec{y}。
YJango
2018/04/10
1.5K0
YJango:深度学习入门
零基础入门深度学习 | 第六章:长短时记忆网络(LSTM)
无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作为一个有理想有追求的程序员,不懂深度学习(Deep Learning)这个超热的技术,会不会感觉马上就out了? 现在救命稻草来了,《零基础入门深度学习》系列文章旨在讲帮助爱编程的你从零基础达到入门级水平。零基础意味着你不需要太多的数学知识,只要会写程序就行了,没错,这是专门为程序员写的文章。虽然文中会有很多公式你也许看不懂,但同时也会有更多的代码,程序员的你一定能看懂的(我周围是一群狂热的Clean Cod
用户1332428
2018/03/09
4.6K0
零基础入门深度学习 | 第六章:长短时记忆网络(LSTM)
【机器学习实战】第6章 支持向量机
本文介绍了基于支持向量机(SVM)的图像分类算法,该算法可以自动提取图像特征,并通过对提取的特征进行分类,从而实现图像识别的功能。在具体实现中,可以使用不同的核函数来对图像特征进行处理,以达到更好的分类效果。同时,本文还介绍了如何使用Python的Scikit-learn库来实现该算法,并给出了详细的代码示例。通过在多个图像集上的测试,该算法能够实现较高的识别准确率,具有较好的应用前景。
片刻
2017/12/29
1.1K0
【机器学习实战】第6章 支持向量机
LogisticRegression(逻辑回归)
logistic回归,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域。例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。以胃癌病情分析为例,选择两组人群,一组是胃癌组,一组是非胃癌组,两组人群必定具有不同的体征与生活方式等。一般来说逻辑回归用来做分类任务,本文列举的是以线性的2分类为例, 除此之外还可以拓展到多更多参数实现非线性分类,以及多分类问题等。在文章中主要写了其推导过程以及部分代码实现
benym
2022/07/14
3690
LogisticRegression(逻辑回归)
神经网络权重初始化问题
之前看Andrew大神的视频有介绍到神经网络权重需要随机初始化而不是全初始化为0的问题,其真正深层次的含义没有弄明白,所以结合一些资料(cs231n课程)希望能让自己之后再想到这个问题的时候能够快速地明白过来。 另外这篇文章其实是一篇译文,所以翻译不是很确定的地方也将原文中的英文语句复制在句后,如果有更合适的翻译也请留言告知一下,谢谢! 参考文献: CS231n Convolutional Neural Networks for Visual Recognition 权重初始化 我们已经知道了
marsggbo
2018/01/23
1.9K0
代码+剖析 | 感知机原理剖析及实现
《统计学习方法》一书在前几天正式看完,由于这本书在一定程度上对于初学者是有一些难度的,趁着热乎劲把自己走过的弯路都写出来,后人也能走得更顺畅一点。
zenRRan
2019/06/03
6750
代码+剖析 | 感知机原理剖析及实现
嵌入式AI快速入门课程-K510篇 (第四篇 AI概念及理论知识)
人工智能是研究开发用于模拟和扩展人的智能的理论、方法、技术及应用系统的一门技术科学。
韦东山
2024/08/22
6240
嵌入式AI快速入门课程-K510篇 (第四篇 AI概念及理论知识)
机器学习十大算法系列(一)——逻辑回归
本文介绍了机器学习中的逻辑回归算法,包括线性回归、逻辑回归、决策树、支持向量机、朴素贝叶斯、K邻近算法、K-均值算法、随机森林、降低维度算法、梯度提升和Adaboost算法。逻辑回归是一种分类算法,通过拟合逻辑函数来预测事件发生的概率。梯度上升法是逻辑回归中的优化方法。
码科智能
2018/01/03
1K0
机器学习笔记(七)——初识逻辑回归、不同方法推导梯度公式
逻辑回归(Logistic)虽带有回归二字,但它却是一个经典的二分类算法,它适合处理一些二分类任务,例如疾病检测、垃圾邮件检测、用户点击率以及上文所涉及的正负情感分析等等。
奶糖猫
2020/07/15
7520
机器学习笔记(七)——初识逻辑回归、不同方法推导梯度公式
权重初始化的几个方法
其中第一步 权重的初始化 对模型的训练速度和准确性起着重要的作用,所以需要正确地进行初始化。
杨熹
2018/10/09
1.3K0
权重初始化的几个方法
机器学习——Python实现逻辑回归(实例:预测病马死亡率)
假设现在有一些数据点,用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归。 利用逻辑回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,以此进行分类。
统计学家
2019/04/10
2.4K1
机器学习——Python实现逻辑回归(实例:预测病马死亡率)
python机器学习实战(四)
http://www.cnblogs.com/fydeblog/p/7364317.html
努力努力再努力F
2018/09/11
7070
python机器学习实战(四)
推荐阅读
相关推荐
逻辑斯谛回归及其物理含义
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档