矩阵变换

【转载】【收藏】机器学习与深度学习核心知识点总结

耗尽温柔 提交于 2019-12-02 19:02:56
原文地址: https://cloud.tencent.com/developer/article/1526902 数学 1.列举常用的最优化方法 梯度下降法 牛顿法 拟牛顿法 坐标下降法 梯度下降法的改进型如AdaDelta,AdaGrad,Adam,NAG等。 2.梯度下降法的关键点 梯度下降法沿着梯度的反方向进行搜索,利用了函数的一阶导数信息。梯度下降法的迭代公式为: 根据函数的一阶泰勒展开,在负梯度方向,函数值是下降的。只要学习率设置的足够小,并且没有到达梯度为0的点处,每次迭代时函数值一定会下降。需要设置学习率为一个非常小的正数的原因是要保证迭代之后的x k +1位于迭代之前的值x k 的邻域内,从而可以忽略泰勒展开中的高次项,保证迭代时函数值下降。 梯度下降法只能保证找到梯度为0的点,不能保证找到极小值点。迭代终止的判定依据是梯度值充分接近于0,或者达到最大指定迭代次数。 梯度下降法在机器学习中应用广泛,尤其是在深度学习中。AdaDelta,AdaGrad,Adam,NAG等改进的梯度下降法都是用梯度构造更新项,区别在于更新项的构造方式不同。对梯度下降法更全面的介绍可以阅读SIGAI之前的文章“ 理解梯度下降法 ”。 3.牛顿法的关键点 牛顿法利用了函数的一阶和二阶导数信息,直接寻找梯度为0的点。牛顿法的迭代公式为: 其中H为Hessian矩阵,g为梯度向量

杭电OJ 1057(C )

夙愿已清 提交于 2019-12-02 09:13:10
本题比较基础,只是理解题意比较困难。 首先输入繁殖天数,即测试用例的个数; 然后输入每天的繁殖次数,每天繁殖这么多次后,得到结果矩阵; 然后输入一个数组D,代表每次繁殖的变换规则; 最后输入初始种群矩阵。 #include <iostream> using namespace std; int main() { int day; //天数 cin >> day; while (day--) { int num; //繁殖次数 cin >> num; int D[16]; int input[22][22], output[22][22]; memset(input, 0, sizeof(input)); memset(output, 0, sizeof(output)); for (int i = 0; i < 16; i++) { cin >> D[i]; //变换规则 } for (int i = 1; i <= 20; i++) { for (int j = 1; j <= 20; j++) { cin >> input[i][j]; //初始种群 } } while (num--) { for (int i = 1; i <= 20; i++) { for (int j = 1; j <= 20; j++) { output[i][j] = input[i][j] + D

【算法】矩阵填数,深度优先搜索(DFS),Pascal改C语言

你。 提交于 2019-12-02 06:55:55
面向对象的上机实验 题目 以下列方式向 5*5 矩阵中填入数字。设数字i(1=<i<=25),则数字i+1 的坐标位置应为(E, W)。(E, W)可根据下列关系由(x,y)算出: 1)(E, W)=(x±3,y) 2)(E, W)=(x,y±3) 3)(E, W)=(x±2,y±2) 求解问题如下: 编写一个程序,当数字1被指定于某个起始位置时,列举出其它24个数字应在的位置;列举该条件下的所有可能方案。 参考答案 网上搜索到数学奥赛中本题的Pascal代码 来自http://blog.sina.com.cn/s/blog_1317189490102vp1k.html 1 Program lx9_1_3; 2 uses crt; 3 const n=5; 4 d:array[1..8,1..2] of shortint=((3,0),(-3,0),(0,3),(0,-3), 5 (2,2),(2,-2),(-2,2),(-2,-2)); 6 var x0,y0:byte; 7 a:array[1..n,1..n] of byte; 8 total:longint; 9 10 procedure print; 11 var i,j:integer; 12 begin 13 inc(total); 14 gotoxy(1,3); 15 writeln('[',total,']');

AES 加密算法的原理详解

本秂侑毒 提交于 2019-12-02 01:56:27
AES 加密算法的原理详解 本教程摘选自 https://blog.csdn.net/qq_28205153/article/details/55798628 的原理部分。 AES简介 高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这个加密算法的)。对称加密算法也就是加密和解密用相同的密钥,具体的加密流程如下图: 下面简单介绍下各个部分的作用与意义: · 明文P 没有经过加密的数据。 · 密钥K 用来加密明文的密码,在对称加密算法中,加密与解密的密钥是相同的。密钥为接收方与发送方协商产生,但不可以直接在网络上传输,否则会导致密钥泄漏,通常是通过非对称加密算法加密密钥,然后再通过网络传输给对方,或者直接面对面商量密钥。密钥是绝对不可以泄漏的,否则会被攻击者还原密文,窃取机密数据。 · AES加密函数 设AES加密函数为E,则 C = E(K, P),其中P为明文,K为密钥,C为密文。也就是说,把明文P和密钥K作为加密函数的参数输入,则加密函数E会输出密文C。 · 密文C 经加密函数处理后的数据 · AES解密函数 设AES解密函数为D,则 P = D(K, C),其中C为密文,K为密钥,P为明文。也就是说,把密文C和密钥K作为解密函数的参数输入,则解密函数会输出明文P。

机房测试模拟1(day2):矩阵+树上贪心+bfs+状压

*爱你&永不变心* 提交于 2019-12-01 23:31:23
T1:入阵曲 n,m<=400,k<=1e6 分析: 考虑只有一行的情况: 将这一行求前缀和后,一段区间的和x=sum[r]-sum[l-1],如果x%k==0,那么sum[r]%k - sum[l-1]%k == 0 转化一下,也就是说: sum[r]与sum[l-1]在模k的意义下相等。 所以对于一行的来说,O(n)地for一遍,用一个桶记录一下模k意义下的值相同的个数,ans+=cnt[k]*(cnt[k]-1)/2 对于多行的来说,枚举上界和下界,再将这一块子矩阵对列求前缀和压缩成一列,转化成上面的问题。 复杂度:O(n^3) #include<bits/stdc++.h> using namespace std; #define N 405 #define M 1000005 #define ll long long #define ri register int int n,m,kk,ans=0,t[M],q[M]; ll a[N][N],l[N][N]; int main() { freopen("rally.in","r",stdin); freopen("rally.out","w",stdout); scanf("%d%d%d",&n,&m,&kk); for(ri i=1;i<=n;++i) for(ri j=1;j<=m;++j) scanf("%lld",

机器学习_数学基础

独自空忆成欢 提交于 2019-12-01 07:58:54
目录 数学基础知识 高等数学 线性代数 概率论和数理统计 数学基础知识 数据科学需要一定的数学基础,但仅仅做应用的话,如果时间不多,不用学太深,了解基本公式即可,遇到问题再查吧。 以下是以前考研考博时候的数学笔记,难度应该在本科3年级左右。 高等数学 1.导数定义: 导数和微分的概念 $f'({{x} {0}})=\underset{\Delta x\to 0}{\mathop{\lim }},\frac{f({{x} {0}}+\Delta x)-f({{x}_{0}})}{\Delta x}$ (1) 或者: $f'({{x} {0}})=\underset{x\to {{x} {0}}}{\mathop{\lim }},\frac{f(x)-f({{x} {0}})}{x-{{x} {0}}}$ (2) 2.左右导数导数的几何意义和物理意义 函数$f(x)$在$x_0$处的左、右导数分别定义为: 左导数:${{{f}'} {-}}({{x} {0}})=\underset{\Delta x\to {{0}^{-}}}{\mathop{\lim }},\frac{f({{x} {0}}+\Delta x)-f({{x} {0}})}{\Delta x}=\underset{x\to x_{0}^{-}}{\mathop{\lim }},\frac{f(x)-f({{x} {0}

AES算法详解

限于喜欢 提交于 2019-12-01 07:19:56
AES算法简介   AES的全称是Advanced Encryption Standard,意思是高级加密标准。 AES密码分组大小和密钥大小可以为128位、192位和256位。然而AES只要求分组大小为128位。本文只对分组大小128位,密钥长度也为128位的Rijndael算法进行分析。密钥长度为192位和256位的处理方式和128位的处理方式类似,只不过密钥长度每增加64位,算法的循环次数就增加2轮,128位循环10轮、192位循环12轮、256位循环14轮。    AES算法使用逻辑就是:发送方将要发送的明文数据X使用秘钥K进行AES加密后会得到密文Y,将密文进行网络传输,接受方在收到密文Y后使用秘钥K进行AES解密后技能得到明文X,这样即使密文Y在网络上传输时被截获了,没有秘钥也难以破解其真实意思。 AES算法相关数学知识   在AES算法中的MixColumn层中会用到伽罗瓦域中的乘法运算,而伽罗瓦域的运算涉及一些数学知识如下: 素域:   有限域有时也称伽罗瓦域,它指的是由有限个元素组成的集合,在这个集合内可以执行加、减、乘和逆运算。而在密码编码学中,我们只研究拥有有限个元素的域,也就是有限域。域中包含元素的个数称为域的阶。只有当m是一个素数幂时,即m=p n (其中n为正整数是p的次数,p为素数),阶为m的域才存在。p称为这个有限域的特征。 也就是说

Attention is all you need 详细解读

╄→尐↘猪︶ㄣ 提交于 2019-12-01 06:03:35
  自从 Attention 机制在提出之后,加入 Attention 的 Seq2Seq 模型在各个任务上都有了提升,所以现在的 seq2seq 模型指的都是结合 rnn 和 attention 的模型。传统的基于 RNN 的 Seq2Seq 模型难以处理长序列的句子,无法实现并行,并且面临对齐的问题。 所以之后这类模型的发展大多数从三个方面入手: · input 的方向性: 单向 -> 双向 · 深度: 单层 -> 多层 · 类型: RNN -> LSTM GRU 但是依旧收到一些潜在问题的制约,神经网络需要能够将源语句的所有必要信息压缩成固定长度的向量。这可能使得神经网络难以应付长时间的句子,特别是那些比训练语料库中的句子更长的句子;每个时间步的输出需要依赖于前面时间步的输出,这使得模型没有办法并行,效率低;仍然面临对齐问题。 再然后 CNN 由计算机视觉也被引入到 deep NLP 中, CNN 不能直接用于处理变长的序列样本但可以实现并行计算。完全基于 CNN 的 Seq2Seq 模型虽然可以并行实现,但非常占内存,很多的 trick ,大数据量上参数调整并不容易。 本篇文章创新点在于抛弃了之前传统的 encoder-decoder 模型必须结合 cnn 或者 rnn 的固有模式,只用 Attention

GCN

旧街凉风 提交于 2019-12-01 02:32:46
REFERENCE: https://www.jianshu.com/p/ad528c40a08f https://www.zhihu.com/question/54504471 Notes: 离散卷积的本质是加权求和 CNN中的卷积本质上就是利用一个共享参数的过滤器(kernel),通过计算中心像素点以及相邻像素点的加权和来构成feature map实现空间特征的提取,当然加权系数就是卷积核的权重系数。 那么卷积核的系数如何确定的呢?是随机化初值,然后根据误差函数通过反向传播梯度下降进行迭代优化。这是一个关键点,卷积核的参数通过优化求出才能实现特征提取的作用,GCN的理论很大一部分工作就是为了引入可以优化的卷积参数。 CNN在Computer Vision里效果为什么好呢?原因:可以很有效地提取空间特征。 但是有一点需要注意:CNN处理的图像或者视频数据中像素点(pixel)是排列成成很整齐的矩阵。(欧几里得距离Euclidean Structure) 与之相对应,科学研究中还有很多Non Euclidean Structure的数据,如图3所示。社交网络、信息网络中有很多类似的结构。 Graph Convolutional Network中的Graph是指数学(图论)中的用顶点和边建立相应关系的拓扑图。 那么为什么要研究GCN? 原因有三: 1)CNN无法处理Non

CTR预估模型——FM、FFM、DeepFM

北战南征 提交于 2019-11-30 21:05:40
一、CTR(Click Through Rate,点击率)   点击率(click-through rate, CTR) 是点击特定链接的用户与查看页面,电子邮件或广告的总用户数量之比。它通常用于衡量某个网站的在线广告活动是否成功,以及电子邮件活动的有效性,是互联网公司进行流量分配的核心依据之一。   无论使用什么类型的模型,点击率这个命题可以被归纳到二元分类的问题,我们通过单个个体的特征,计算出对于某个内容,是否点击了,点击了就是1,没点击就是0。对于任何二元分类的问题,最后我们都可以归结到逻辑回归上面。 早期的人工特征工程 + LR(Logistic Regression):这个方式需要大量的人工处理,不仅需要对业务和行业有所了解,对于算法的经验要求也十分的高。 GBDT(Gradient Boosting Decision Tree) + LR:提升树短时这方面的第二个里程碑,虽然也需要大量的人工处理,但是由于其的可解释性和提升树对于假例的权重提升,使得计算准确度有了很大的提高。 FM-FFM:FM和FFM模型是最近几年提出的模型,并且在近年来表现突出,分别在由Criteo和Avazu举办的CTR预测竞赛中夺得冠军,使得到目前为止,还都是以此为主的主要模型占据主导位置。 Embedding模型可以理解为FFM的一个变体。   CTR预估技术从传统的Logistic回归