精华内容
下载资源
问答
  • Warning[Pe223]: function "UART1_init" declared implicitly I:\我的项目\项目1\项目内容\MBV\main.c 72 Error[Pe020]: identifier "TXE" is undefined I:\我的项目\项目1\项目内容\MBV\main.c 87 Error[Pe020]...
  • 点击上方“Datawhale”,选择“星标”公众号第一时间获取价值内容矩阵求导的技术,在统计学、控制论、机器学习等领域有广泛的应用。鉴于我看过的一些资料或言之不详、或繁乱绪,本文来做个科普,分作两篇,上篇讲...

    点击上方“Datawhale”,选择“星标公众号

    第一时间获取价值内容

    af0630055aaeec2d443d6eb1fbf0b767.gif

    矩阵求导的技术,在统计学、控制论、机器学习等领域有广泛的应用。鉴于我看过的一些资料或言之不详、或繁乱无绪,本文来做个科普,分作两篇,上篇讲标量对矩阵的求导术,下篇讲矩阵对矩阵的求导术。本文使用小写字母x表示标量,粗体小写字母 表示向量,大写字母X表示矩阵。首先来琢磨一下定义,标量f对矩阵X的导数,定义为,即f对X逐元素求导排成与X尺寸相同的矩阵。然而,这个定义在计算中并不好用,实用上的原因是在对较复杂的函数难以逐元素求导;哲理上的原因是逐元素求导破坏了整体性。试想,为何要将f看做矩阵X而不是各元素的函数呢?答案是用矩阵运算更整洁。所以在求导时不宜拆开矩阵,而是要找一个从整体出发的算法。为此,我们来回顾,一元微积分中的导数(标量对标量的导数)与微分有联系:;多元微积分中的梯度(标量对向量的导数)也与微分有联系: ,这里第一个等号是全微分公式,第二个等号表达了梯度与微分的联系;受此启发,我们将矩阵导数与微分建立联系: ,这里tr代表迹(trace)是方阵对角线元素之和,满足性质:对尺寸相同的矩阵A,B,,即是矩阵A,B的内积,因此上式与原定义相容。然后来建立运算法则。回想遇到较复杂的一元函数如,我们是如何求导的呢?通常不是从定义开始求极限,而是先建立了初等函数求导和四则运算、复合等法则,再来运用这些法则。故而,我们来创立常用的矩阵微分的运算法则:
    1. 加减法:;矩阵乘法: ;转置:;迹:。
    2. 逆:。此式可在两侧求微分来证明。
    3. 行列式: ,其中表示X的伴随矩阵,在X可逆时又可以写作。此式可用Laplace展开来证明,详见张贤达《矩阵分析与应用》第279页。
    4. 逐元素乘法:,表示尺寸相同的矩阵X,Y逐元素相乘。
    5. 逐元素函数: ,是逐元素运算的标量函数。
    我们试图利用矩阵导数与微分的联系 ,在求出左侧的微分df后,该如何写成右侧的形式并得到导数呢?这需要一些迹技巧(trace trick):
    1. 标量套上迹:
    2. 转置:。
    3. 线性:。
    4. 矩阵乘法交换:。两侧都等于。
    5. 矩阵乘法/逐元素乘法交换:。两侧都等于。

    观察一下可以断言,若标量函数f是矩阵X经加减乘法、行列式、逆、逐元素函数等运算构成,则使用相应的运算法则对f求微分,再使用迹技巧给df套上迹并将其它项交换至dX左侧,即能得到导数。

    在建立法则的最后,来谈一谈复合:假设已求得,而Y是X的函数,如何求呢?在微积分中有标量求导的链式法则,但这里我们不能随意沿用标量的链式法则,因为矩阵对矩阵的导数截至目前仍是未定义的。于是我们继续追本溯源,链式法则是从何而来?源头仍然是微分。我们直接从微分入手建立复合法则:先写出,再将dY用dX表示出来代入,并使用迹技巧将其他项交换至dX左侧,即可得到。

    接下来演示一些算例。特别提醒要依据已经建立的运算法则来计算,不能随意套用微积分中标量导数的结论,比如认为AX对X的导数为A,这是没有根据、意义不明的。

    例1:,求。:先使用矩阵乘法法则求微分: ,再套上迹并做交换:,对照导数与微分的联系,得到。注意:这里不能用,导数与乘常数矩阵的交换是不合法则的运算(而微分是合法的)。有些资料在计算矩阵导数时,会略过求微分这一步,这是逻辑上解释不通的。例2【线性回归】:,求。:严格来说这是标量对向量的导数,不过可以把向量看做矩阵的特例。将向量范数写成,求微分,使用矩阵乘法、转置等法则:。对照导数与微分的联系,得到。例3【多元logistic回归】:,求。其中是除一个元素为1外其它元素为0的向量;,其中表示逐元素求指数,代表全1向量。解1:首先将softmax函数代入并写成,这里要注意逐元素log满足等式,以及满足。求微分,使用矩阵乘法、逐元素函数等法则:。再套上迹并做交换,注意可化简,这是根据等式,故。对照导数与微分的联系,得到。解2:定义,则 ,先如上求出 ,再利用复合法则:,得到。例4【方差的最大似然估计】:样本,其中是对称正定矩阵,求方差的最大似然估计。写成数学式是:,求的零点。:首先求微分,使用矩阵乘法、行列式、逆等运算法则,第一项是,第二项是。再给第二项套上迹做交换:,其中定义为样本方差。对照导数与微分的联系,有,其零点即的最大似然估计为。

    最后一例留给经典的神经网络。神经网络的求导术是学术史上的重要成果,还有个专门的名字叫做BP算法,我相信如今很多人在初次推导BP算法时也会颇费一番脑筋,事实上使用矩阵求导术来推导并不复杂。为简化起见,我们推导二层神经网络的BP算法。

    例5【二层神经网络】:,求和。其中是除一个元素为1外其它元素为0的向量,同例3,是逐元素sigmoid函数。:定义,,,则。在例3中已求出 。使用复合法则,注意此处, 都是变量:,使用矩阵乘法交换的迹技巧从第一项得到,从第二项得到。接下来求,继续使用复合法则,并利用矩阵乘法和逐元素乘法交换的迹技巧:,得到。为求,再用一次复合法则:,得到。

    83bb393da4469e413b8bfeb0a43284e5.png

    展开全文
  • 首先我们需要了解一下以下的内容(也是看的网上各种帖子,有书的同学建议多看看书上怎么说的): 1、二进制的原码、反码和补码,以int类型为例 原码:最高位是符号位(1表示负数,0表示正数),剩余位就是数值位,用...

    以下内容是个人理解,如果有说的不对的地方,欢迎指正!

    首先我们需要了解一下以下的内容(也是看的网上各种帖子,有书的同学建议多看看书上怎么说的):
    1、二进制的原码、反码和补码,以int类型为例
    原码:最高位是符号位(1表示负数,0表示正数),剩余位就是数值位,用二进制表示。
    反码:正数的反码与原码相同,负数的反码除符号位以外,其他位取反,即0变成1,1变成0。
    补码:正数的补码与原码相同,负数的补码为其反码+1。
    正零和负零的补码相同。
    我们以十进制的1和-1为例。假如都是整型int类型。
    1的原码:00000000 00000000 00000000 00000001
    1的反码:00000000 00000000 00000000 00000001
    1的补码:00000000 00000000 00000000 00000001
    -1的原码:10000000 00000000 00000000 00000001
    -1的反码:11111111 11111111 11111111 11111110
    -1的补码:11111111 11111111 11111111 11111111
    2、有符号数据在计算机中是以补码的形式存储的
    3、unsigned无符号类型二进制中没有符号位,全是数值位
    比如:二进制 10000000 00000001转换成有符号的short是-1,但是转换成unsigned short是32769(2^15+1)
    4、负数的二进制怎么转换为十进制:每个位取反(包括符号位),然后+1,转换成十进制加负号。
    比如:10000000 00000000 这个二进制是有符号的short,那么解析后得到的值就是-2^15
    5、转换规则:
    转换的遵旨就是看计算机里存储的内容是什么,然后再根据类型规则来读这一串二进制数字就行了。
    1)长类型–>短类型:取低位
    2)短类型–>长类型:高位补全。如果有符号是补符号位,正数补0,负数补1;如果是无符号都补0。
    以下面的代码为例:

    #include <stdio.h>
    int main(void)
    {
            short a = -1,a1;
            unsigned short b,b1;
            int c = 98304,c1;
            b=a;
            a1=c;
            b1=c;
            c1=a;
            printf("a=%d,c=%d\n",a,c);
            printf("b=%u,a1=%d,b1=%u,c1=%d\n",b,a1,b1,c1);
    }
    

    执行结果:
    执行结果
    int c=98304,在计算机中存储的是 00000000 00000001 10000000 00000000
    short a=-1,在计算机中存储的是 11111111 11111111
    然后我们再来看转换:
    1)b=a, b是无符号short,a是有符号short,长度相同,不需要补位或截取,那b就直接指向了a在计算机中的存储内容。
    按照无符号short类型来读取这一串二进制数字,就是2^16-1,即65535
    2)a1=c,a1是有符号short,c是有符号int,长赋值给短,低位截取16位,得到10000000 00000000这样一个二进制数字,我们按照有符号short来解析,这是一个负数,我们按照上面介绍的负数转换十进制的方法,得到值为-2^15,即-32768。
    3)b1=c,b1是无符号short,c是有符号int,长赋值给短,低位截取16位,得到10000000 00000000这样一个二进制数字,
    我们按照无符号short来解析,就是2^15 ,即32768。
    4)c1=a,c1是有符号int,a是有符号short,短赋值给长,因为c1是有符号类型,所以补符号位1,得到11111111 11111111 11111111 11111111这样一个二进制,我们按照有符号int来解析,这是一个负数,我们按照上面介绍的负数转换十进制的方法,得到的值为-1。

    展开全文
  • Java code ... import java.io.File; import java.io.FileInputStream;... /* 字节形式读取模板...----- 实现思路:模板中固定部分手动输入,变化的部分用$info$表示,只需替换$info$即可。 1、采用字节的形式读取...
  • 有些内容只在公众号发布,因此大家觉得内容不错的话,可以关注一下。如果再给 ➕ 个星标就更棒啦! 订阅 大家可以用 Github 提供的 RSS 来订阅我的仓库更新。 :octocat:仓库介绍 leetcode 题解,记录自己的 ...
  • 问题:源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示? 开门见山: 说白了就是最新的Tomcat8.5版本的webapps下欢迎页 Docker内的webapps目录 Tomcat7.0下的目录 怎么才看看到小猫呢 1...
  • 通过在战斗中出现增援截获的数据包,我们会发现服务器端发送了这样一个包: 复制内容到剪贴板 代码:F4 44 12 E9 EB 03 F8 05 02 00 00 03 00 00 00 00 00 00 第5-第8个字节为增援NPC的代码(这里我们就简单的以黄狗...
  • 自定义单元格格式将单元格中的数全部变成万元表示 有何办法实现将一张表中的数据由元的单位转换为万元 常用的自定义格式 自定义格式 怎样定义格式 在工具按钮之间设置分隔线 自定义区域为每一页的标题 一个单元格内...
  • EXCEL函数公式集

    热门讨论 2010-03-16 03:26:38
    自定义单元格格式将单元格中的数全部变成万元表示 有何办法实现将一张表中的数据由元的单位转换为万元 常用的自定义格式 自定义格式 怎样定义格式 在工具按钮之间设置分隔线 自定义区域为每一页的标题 一个单元格内...
  • 6. CHDK软件使用时要将SD卡LOCK,都写保护了还怎么拍照—— 没错,一般情况下SD卡锁定后无法储存照片,但CHDK却恰恰是利用了这一点,只有卡处于写保护状态时才会引发破解程序的自动运行,然后便可对SD卡正常读写操纵...
  • 第一节内容:包括神经网络的基础知识,BP网络的特点,bp主要应用的场合,使用时应注意的问题。 什么是神经网络? 神经网络是由很多神经元组成的,首先我们看一下,什么是神经元 ...
  • 光标移到第二章,这时可以看到第二章的页眉和第一章是相同的,鼠标双击页眉Word会弹出页眉页脚工具栏,工具栏上有一个“同前”按钮(图像按钮,不是文字),这个按钮按下表示本节的页眉与前一节相同,我们需要的是各...
  • 在这一讲中,我们主要是了解一下 Linux 的概况,以及对 Linux 有一个初步的感性认识。 一.什么是Linux? Linux 是一个以 Intel 系列 CPU(CYRIX,AMD 的 CPU也可以)为硬件平台,完全免费的 UNIX 兼容系统,完全...
  • excel的使用

    2012-11-25 17:06:01
    6、自定义函数虽然Excel中已有大量的内置函数,但有时可能还会碰到一些计算函数可用的情况。假如某公司采用一个特殊的数学公式计算产品购买者的折扣,如果有一个函数来计算岂不更方便?下面就说一下如何创建这样的...
  • 各位版主、大神们: ... 能不能直接来一个完整的编码,然后让我在secureCRT上run一下,然后我边看边理解,万分感谢! 我还不知道怎么悬赏,但是如果有结果的话,一定追加悬赏(虽然还不知道怎么给)但肯定保证!
  • linux tar命令详解

    2011-04-21 19:17:31
    t 列出档案文件的内容,查看已备份了哪些文件。 u 更新文件。就是说,用新增的文件取代原备份文件,如果在备份文件中未找到要更新的文件,则把他追加到备份文件的最后。 x 从档案文件中释放文件。 辅助选项: b 该...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    用例只描述参与者和系统在交互过程中做些什么,并不描述怎么做。 用例图 关联关系 用例图 泛化关系 用例图 泛化关系 用例图 用例图 用例图 用例用于什么情况? 不知道什么情况不用用例 如果没有用到用例,...
  •  bootcfg /rebuild 重复全部 Windows 安装过程并允许用户选择要添加的内容。  注意:使用 bootcfg /rebuild 之前,应先通过 bootcfg /copy 命令备份 boot.ini 文件。  bootcfg /scan 扫描用于 Windows 安装的...
  • 问题3-14:能否归纳一下连续ARQ协议都有哪些主要功能和特别要注意的地方? 问题3-15:在许多有关网络技术的书籍或文献中,经常会看到“应答”、“回答”、“响应”和“确认”等术语。这些术语的意思都一样吗? 问题3...
  • 第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...
  • 第三,实践类的操作系统书籍还是太少了,以至于你要想看看别人是怎么做的,除了读以《操作系统:设计与实现》为代表的极少数书籍之外,就是一头扎进源代码中,而结果有时相当令人气馁。我自己也气馁过,所以我在第二...
  • 感情上发生了问题,为了向女友解释一下,我准备发一条短信,一共打了75个字。最后八个字是“我恨你是不可能的”,点发送。后来得知对方收到的,只有70个字,短信结尾是“……我恨你”。 5.5.1串的顺序存储结构 129 ...
  • 感情上发生了问题,为了向女友解释一下,我准备发一条短信,一共打了75个字。最后八个字是“我恨你是不可能的”,点发送。后来得知对方收到的,只有70个字,短信结尾是“……我恨你”。 5.5.1串的顺序存储结构 129 ...
  • 以上是MS的官方帮助,下面我们举几个例子来具体说明一下For命令在入侵中的用途。 sample2: 利用For命令来实现对一台目标Win2k主机的暴力密码破解。 我们用net use \ipipc$ "password" /u:"administrator"来尝试这...
  • 你可以将上面的myfile.xml修改一下,比如将改为,然后用IE5直接打开myfile.xml,会得到一个出错信息页面: <title>XML轻松学习手册 <author>ajie <Email>ajie@aolhoo.com</email> <date>20010115 </myfile> ...
  • timerFunc就是把那个被MO监听的文本节点改一下它的内容,这样我改了文本内容,MO就会在当前的所有同步代码完成之后执行回调,从而执行数据更新到DOM上之后的任务。 我一开始在看这一段代码时忘记...
  •  你想填的内容都填完以后,保存一下,指定一个文件名,必须是在当前目录。 这里我们选择的是,深度 GHOST XP SP3快速装机专业版V9.0 09年8月更新版,系统下载 http://www.ghost2.cn/ghostxp/949.htm,把这下载的...
  • 8.6.3 以字符串字面量表示二进制数据 240 8.6.4 计算表达式返回的数据类型 241 8.7 排名函数 242 8.7.1 生成递增行号 242 8.7.2 根据排名返回行 244 8.7.3 根据间隔排名返回行 245 8.7.4 使用NTILE ...
  •  本书配套有400多分钟的全程开发视频光盘,指导读者快速、障碍地学通android实战开发技术。..  本书适合具备一定软件开发经验,想快速进入android开发领域的程序员;具备一些手机开发经验的开发者和android开发...
  • 就简单的配置了一下可供项目启动: <pre><code>javascript var webpack = require('webpack'); var path = require('path'); module.exports = { context: __dirname + &#...

空空如也

空空如也

1 2 3
收藏数 51
精华内容 20
关键字:

怎么表示一下无内容