30秒看懂矩阵

矩阵

也许应该括起来

数字元素排列的矩形阵列

矩阵加法

大小相同的矩阵对相同位置的数字相加,自然也可以相减

矩阵乘法

矩阵和常数相乘

矩阵中每一个数都和这个常数相乘,这个意义上矩阵除以常数也没问题。不过从解方程的意义上讲,矩阵乘以常数之后还是一样的矩阵。

矩阵和矩阵相乘

当第一个矩阵的列数等于第二个矩阵的行数,他们可以相乘。乘法规则是,第一个矩阵第m行的元素与对应的第二个矩阵第n列的元素相乘,他们的结果再相加,得到了相乘后矩阵的第m行第n列元素(因此相乘的结果是一个m行n列的矩阵)。

从规则很快可以看出来,两个矩阵的位置是不能交换的,因此矩阵乘法不满足交换律;再结合矩阵加法的规则,模拟一下过程,可以看出来矩阵乘法满足分配律和结合律。矩阵乘法的规则可以从线性方程组的角度解释推导。

矩阵乘法与线性变换

我花了不少时间才明白上面是在说什么(丢

Rn是所有长度为n的行矢量,同样,Rm是所有长度为m的行矢量。现在Rn要变成Rm,实际上是Rn中的行矢量x能够映射到Rm中的某个行矢量。定义了f表示映射函数,用f(x)=Af*x表示经过矩阵的映射x得到长度为m的表示。

尽管是行矢量,但我们知道矩阵乘法要求第一个矩阵的列数要等于第二个矩阵的行数,因此算的时候竖着写,矢量x看作一个n*1的矩阵,能够得到一个m*1的矩阵,也就是映射后的矢量。通过矩阵,我们能够实现在维度不同的空间中映射矢量,但不一定可逆。

上图中二维平面的例子就是长度为2的矢量做变换,算是比较直观了。

内积与外积

向量的乘法产生内积与外积,其中外积是一个矩阵,内积是一个实数。

外积

m*1的列向量与1*n的行向量相乘,最终得到m*n矩阵,而这个矩阵上i行j列的值等于列向量第i行乘以行向量第j列。

内积

也叫点积,或者数量积,如果m=n,可以得到内积,高中数学就已经做过这样的计算。例如(a,b)*(c,d)=ac+bd

element-wise multiplication & matrix multiplication

前者相乘的规则是:对应位置上的元素分别相乘,因此两个矩阵大小应一致,numpy中用v*u表示。后者是矩阵乘法,用dot(v,u)。

矩阵转置

转置后的矩阵m行n列的元素是原来n行m列的元素,矩阵由n*m变为m*n。矩阵w转置的标记如图所示。

非凸优化与梯度下降

首先抛一个知乎的回答:在数学中一个非凸的最优化问题是什么意思?

作者:王业磊
链接:https://www.zhihu.com/question/20343349/answer/17347657

在深度学习中,我们需要学习一些参数,使我们的模型更加准确。但这些参数一开始是0或随机的,深度学习的过程是将这些参数一次次迭代,从而找到最优解。

w,b:参数 J(w,b):代价函数

从上图可以看到,求导的结果为负的时候,w和b的值会增加,反之亦然,这使得w和b逐渐接近最优解(极值)。这里可能出现的问题是,α的取值要合适,暂时不做探讨;并且不能出现多个局部最优解(多个极值),这就是要求J为凸函数的原因了。

有一点需要指出:偏微分使用符号∂而不是d,但这种使用形式并没有太多的道理,无须在意。

四重奏

别府:我觉得这里也不错

卷:是不是太没上进心了

别府:我觉得没必要所有人都拥有上进心,又不是所有人都想成为有钱人,不是所有人之间都存在竞争,我觉得每个人都会有正好适合自己的地方

第8集

家森:他们两个现在有没有在喝酒呢?你是单相思

雀:不劳你操心,单相思于我而言正好。去过的旅行可以变成回忆,没有去成的旅行,不也能成为回忆吗?

家森:不懂你在说什么

第8集,小雀请别府和卷出去约会,自己和家森正在别墅吃章鱼小丸子的时候
(更多…)

常说的XSS攻击是什么❓

(手动)翻译自部分维基百科

XSS(Cross-site scripting,跨站脚本)攻击是Web应用程序中一种典型的安全性漏洞。XSS允许攻击者向网页注入客户端脚本从而使其他浏览者运行此脚本。这种脚本可能被攻击者用来绕过同源策略(same-origin policy)。根据赛门铁克的数据,大约84%的网站安全漏洞是XSS漏洞。白帽公司HackerOne在2017年报道称XSS仍然是主要威胁载体。XSS既可以造成相当的麻烦,也可以导致严重的安全风险,这取决于网站处理的数据的敏感性与网站主实施的安全缓解措施的性质。

背景

由于安全性的需要,同源策略限制了网页访问URI(Uniform Resource Identifier,资源统一标识符) Scheme或主机名、端口号不同的权限。

[scheme]://[host]:[port]/[path]?[query]

XSS攻击者利用已知漏洞向Web应用、服务器或插件系统注入恶意内容,由于所有内容都由信任源发出,恶意脚本以用户的身份从浏览器取得了访问、控制、修改敏感页面、cookies与验证信息的权限。

微软的安全工程师在2000年2月引入了XSS的术语,用以描述从一个不相关的攻击网站加载被攻击的第三方网页应用,以一种运行攻击者准备好的在目标站点中的JavaScript代码片段的方式攻击(利用反射或非持续XSS漏洞)。这种定义逐渐扩展到了持续性和非JavaScript语言的攻击。

XSS漏洞早在上世纪90年代被发现和利用。包括Twitter,Facebook,MySpace,Youtube与Orkut等网站都中过招。现在XSS漏洞已经超过了缓冲区溢出成为最常见的安全漏洞,2007年的部分研究者称,至少约68%的网站可能对XSS攻击是透明的。

种类

XSS没有标准化的分类,但大部分专家将其分为非持续性XSS攻击与持续性XSS攻击。也有分为传统的XSS攻击(由服务器代码漏洞导致的)与基于DOM的XSS攻击(在客户端代码中注入脚本)。

非持续性XSS(反射)

非持续XSS是目前最基础的web漏洞。这种漏洞发生在web客户端提交数据时,通常包含在HTTP请求参数中。没有经过验证和编码的用户提交数据可能会导致HTML注入。搜索引擎是一个常见的例子,因为搜索页面会显示用户输入的内容,如果不进行合适的编码,将会导致非持续性XSS。

持续性XSS(存储)

持续性XSS具有更大的破坏力。由于恶意代码保存在服务器上,任何浏览网页的用户都会受影响。典型的例子是留言板,如果没有经过验证和编码,用户提交的HTML内容将反映到其他用户浏览的页面。如果这是一个匿名留言版,恶意内容可能会收集用户信息。

因为存储在服务器上,这种攻击不需要主动寻找受害者,相比一个个地诱导覆盖面更大,尤其在在社交网络中传播(XSS蠕虫)。

服务端对比基于DOM的XSS

历史上XSS漏洞首先在服务端渲染页面的Web应用中被发现,但随着JavaScript与AJAX等技术发展,非持续性XSS的一个子类——基于DOM的XSS攻击出现,这种攻击不需要经由网站的服务器,而由JavaScript代码在用户端实现。JQuery在2011年曾曝出基于DOM的XSS漏洞,而这种漏洞的预防方法与一般的XSS预防方法相近,区别在于由JavaScript代码执行预防策略(如输入验证和字符转义)。一些JavaScript框架内建了预防XSS攻击的策略——如Angular.JS。

Self-XSS

Self-XSS不是严格意义上的XSS,它欺骗用户自己执行代码,尽管Web应用并没有漏洞。这种XSS的风险与常规XSS相当。

Mutated XSS(mXSS)

这种攻击方式可谓很天才了,它指的是攻击者利用一段看似安全的代码(绕过预防XSS的策略)进行XSS攻击,这些代码将会被浏览器修改或重新渲染,这使得预防策略难以生效。一个例子是在CSS的font-family中利用引号与引号的转义字符改变浏览器渲染的结果。

MySQL根据条件返回bool值

有时候我希望从数据库中拉取数据时能够获得一些较为复杂的信息,比如获取活动信息时还想知道当前用户是否参加了活动(需要再做一次查询才能判断),为了简化后台逻辑,避免查询两次获得两组结果再合并,我发现了CASE语句。

在查询中使用CASE:

SELECT 
CASE WHEN uid='admin' THEN 1
ELSE 0 END 
from users;

这段查询选择了CASE的结果,根据行(rows)是否满足WHEN的条件返回相应的结果。但如果有多个WHEN,返回的结果取决于最后一种满足的条件的返回值。