mu

【Learning】积性函数前缀和——洲阁筛(min_25写法)

对着背影说爱祢 提交于 2020-04-20 17:55:00
问题描述      洲阁筛解决的问题主要是$n$范围较大的积性函数前缀和。    ​  已知一积性函数$f(i)$,求$\sum_{i=1}^nf(i)$。      $n\leq10^{12}$.          求解方法      如果$f(i)$在质数处的取值比较简单,那么可以运用洲阁筛来求解。    ​  我们需要两个辅助数组。    $g_{i,j}$      定义如下: $$ \begin{aligned} g_{i,j}&=\sum_{k=2}^i[k与p_1,p_2,...,p_j互质或就是其中某个质数]; s(k)\ &=\sum_{k=2}^i[k是\leq p_j的质数或k的最小质因子大于p_j]; s(k) \end{aligned} $$   其中$s(x)$是一个完全积性函数,它可以是$s(x)=x$,或$s(x)=1$,等等。    ​  我们一般要求第二维计算到$m$,其中$m$为满足$p_m\le\sqrt n$的最大正整数。      这时候,$g_{x,m}$就表示 函数$s$在前缀范围$[1,x]$内的质数处的取值之和 ,这也是$g$数组的主要作用。但这里$x$的定义域不是$[1,n]$,下文会提到。       这个数组怎么求呢?    ​  首先边界条件比较简单: $$ g_{i,0}=\sum_{k=2}^is(k) $$  

[Deep Learning] GELU (Gaussian Error Linerar Units)

China☆狼群 提交于 2020-04-19 10:21:29
(转载请注明出处哦~) 参考链接: 1. 误差函数的wiki百科: https://zh.wikipedia.org/wiki/%E8%AF%AF%E5%B7%AE%E5%87%BD%E6%95%B0 2. 正态分布的博客: https://blog.csdn.net/hhaowang/article/details/83898881 3. StackExchange Mathematics: Why the error function is so similar to the hyperbolic tangent? https://math.stackexchange.com/questions/1892553/why-the-error-function-is-so-similar-to-the-hyperbolic-tangent 4. WolframAlpha: y = tanh(x) - \int_{0}^{x}e^{-t^{2}}dt https://www.wolframalpha.com/input/?i=y+%3D+tanh(x)+-+%5Cint_%7B0%7D%5E%7Bx%7De%5E%7B-t%5E%7B2%7D%7Ddt 前导知识:正态分布(section 1),误差函数(section 2),ReLU,ELU, dropout, zoneout. 5

[考试反思]0417省选模拟73:直率

人走茶凉 提交于 2020-04-18 11:41:40
这次的题挺奇怪的。 大概是比较简单。。。也许吧? $T1$暴力显然可过,就没什么可说的。 $T2$题目或者$std$锅了, 好气啊本来能抢到两个绿框的。 不到三小时的时候先$AC$了一遍,结果发现自己的边界是错的(然而$std$也是错的)。 所以改成对的,然后就和$std$不一样了,然后就$WA$了。 $T3$一眼看着像$min25$筛然后就自闭了,尝试写然而并没有写出来。暴力跑路。 虽说$min25$的确应该可以过,但是正解简单得多,想复杂了。。。 T1:决战 大意:$n \times 3$的矩阵,每个棋子周围$8$个格子中的一些不能放置其它棋子。求放置$m$棋子的方案数。$n \le 2500$ 直接暴力$dp$。$O(n^2)$显然可过啊。 1 #include<bits/stdc++.h> 2 using namespace std; 3 #define mod 998244353 4 #define ri register int 5 void add( int &a, int b){a+=b; if (a>=mod)a-= mod;} 6 int dp[ 2 ][ 7501 ][ 8 ],ok[ 8 ],tr[ 8 ][ 8 ],n,m,ban[ 3 ][ 3 ],t[ 8 ][ 9 ]; 7 const int bit[]={ 0 , 1 , 1 , 2 , 1 ,

GitHub

寵の児 提交于 2020-04-17 07:33:05
【推荐阅读】微服务还能火多久?>>> uber-go/guide 的中文翻译 English Uber Go 语言编码规范 Uber 是一家美国硅谷的科技公司,也是 Go 语言的早期 adopter。其开源了很多 golang 项目,诸如被 Gopher 圈熟知的 zap 、 jaeger 等。2018 年年末 Uber 将内部的 Go 风格规范 开源到 GitHub,经过一年的积累和更新,该规范已经初具规模,并受到广大 Gopher 的关注。本文是该规范的中文版本。本版本会根据原版实时更新。 版本 当前更新版本:2020-02-25 版本地址: commit:#86 如果您发现任何更新、问题或改进,请随时 fork 和 PR Please feel free to fork and PR if you find any updates, issues or improvement. 目录 介绍 指导原则 指向 interface 的指针 Interface 合理性验证 接收器 (receiver) 与接口 零值 Mutex 是有效的 在边界处拷贝 Slices 和 Maps 使用 defer 释放资源 Channel 的 size 要么是 1,要么是无缓冲的 枚举从 1 开始 使用 "time" 处理时间 错误类型 错误包装 (Error Wrapping) 处理类型断言失败

在线优化算法 FTRL 的原理与实现

痴心易碎 提交于 2020-04-14 13:28:54
【推荐阅读】微服务还能火多久?>>> 在线学习想要解决的问题 在线学习 ( \(\it{Online \;Learning}\) ) 代表了一系列机器学习算法,特点是每来一个样本就能训练,能够根据线上反馈数据,实时快速地进行模型调整,使得模型及时反映线上的变化,提高线上预测的准确率。相比之下,传统的批处理方式需要一次性收集所有数据,新数据到来时重新训练的代价也很大,因而更新周期较长,可扩展性不高。 一般对于在线学习来说,我们致力于解决两个问题: 降低 regret 和提高 sparsity 。其中 regret 的定义为: \[\text{Regret} = \sum\limits_{t=1}^T \ell_t(\bold{w}_t) - \min_\bold{w}\sum\limits_{t=1}^T\ell_t(\bold{w}) \] 其中 \(t\) 表示总共 \(T\) 轮中的第 \(t\) 轮迭代, \(\ell_t\) 表示损失函数, \(\bold{w}\) 表示要学习的参数。第二项 \(\min_\bold{w}\sum_{t=1}^T\ell_t(\bold{w})\) 表示得到了所有样本后损失函数的最优解,因为在线学习一次只能根据少数几个样本更新参数,随机性较大,所以需要一种稳健的优化方式,而 regret 字面意思是 “后悔度”,意即更新完不后悔。

矩阵分解在协同过滤推荐算法中的应用

天涯浪子 提交于 2020-04-13 13:44:41
【今日推荐】:为什么一到面试就懵逼!>>>     在 协同过滤推荐算法总结 中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结。(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题     在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户。比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品3 物品4 物品5 物品6 物品7 用户1 3 5 1 用户2 2 4 用户3 4 用户4 2 1 用户5 1 4     对于每个用户,我们希望较准确的预测出用户对未评分物品的评分。对于这个问题我们有很多解决方法,本文我们关注于用矩阵分解的方法来做。如果将m个用户和n个物品对应的评分看做一个矩阵$M$,我们希望通过矩阵分解来解决这个问题。 2. 传统的奇异值分解SVD用于推荐     说道矩阵分解,我们首先想到的就是奇异值分解SVD。在 奇异值分解(SVD)原理与在降维中的应用 中,我们对SVD原理做了总结。如果大家对SVD不熟悉的话,可以翻看该文。     此时可以将这个用户物品对应的$m \times n$矩阵$M

C++ 多线程

梦想的初衷 提交于 2020-04-13 08:51:01
C++11中引入了一个用于多线程操作的thread类,简单多线程示例: #include <iostream> #include <thread> #include <Windows.h> using namespace std; void thread01() { for ( int i = 0 ; i < 5 ; i++ ) { cout << " Thread 01 is working ! " << endl; Sleep( 100 ); } } void thread02() { for ( int i = 0 ; i < 5 ; i++ ) { cout << " Thread 02 is working ! " << endl; Sleep( 200 ); } } int main() { thread task01(thread01); thread task02(thread02); task01.join(); task02.join(); for ( int i = 0 ; i < 5 ; i++ ) { cout << " Main thread is working ! " << endl; Sleep( 200 ); } system( " pause " ); } 输出: 两个子线程并行执行,join函数会阻塞主流程

矩阵分解在协同过滤推荐算法中的应用

空扰寡人 提交于 2020-04-12 15:33:59
    在 协同过滤推荐算法总结 中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结。(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题     在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户。比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品3 物品4 物品5 物品6 物品7 用户1 3 5 1 用户2 2 4 用户3 4 用户4 2 1 用户5 1 4     对于每个用户,我们希望较准确的预测出用户对未评分物品的评分。对于这个问题我们有很多解决方法,本文我们关注于用矩阵分解的方法来做。如果将m个用户和n个物品对应的评分看做一个矩阵$M$,我们希望通过矩阵分解来解决这个问题。 2. 传统的奇异值分解SVD用于推荐     说道矩阵分解,我们首先想到的就是奇异值分解SVD。在 奇异值分解(SVD)原理与在降维中的应用 中,我们对SVD原理做了总结。如果大家对SVD不熟悉的话,可以翻看该文。     此时可以将这个用户物品对应的$m \times n$矩阵$M$进行SVD分解

矩阵分解在协同过滤推荐算法中的应用

隐身守侯 提交于 2020-04-12 12:22:16
    在 协同过滤推荐算法总结 中,我们讲到了用矩阵分解做协同过滤是广泛使用的方法,这里就对矩阵分解在协同过滤推荐算法中的应用做一个总结。(过年前最后一篇!祝大家新年快乐!明年的目标是写120篇机器学习,深度学习和NLP相关的文章) 1. 矩阵分解用于推荐算法要解决的问题     在推荐系统中,我们常常遇到的问题是这样的,我们有很多用户和物品,也有少部分用户对少部分物品的评分,我们希望预测目标用户对其他未评分物品的评分,进而将评分高的物品推荐给目标用户。比如下面的用户物品评分表: 用户\物品 物品1 物品2 物品3 物品4 物品5 物品6 物品7 用户1 3 5 1 用户2 2 4 用户3 4 用户4 2 1 用户5 1 4     对于每个用户,我们希望较准确的预测出用户对未评分物品的评分。对于这个问题我们有很多解决方法,本文我们关注于用矩阵分解的方法来做。如果将m个用户和n个物品对应的评分看做一个矩阵$M$,我们希望通过矩阵分解来解决这个问题。 2. 传统的奇异值分解SVD用于推荐     说道矩阵分解,我们首先想到的就是奇异值分解SVD。在 奇异值分解(SVD)原理与在降维中的应用 中,我们对SVD原理做了总结。如果大家对SVD不熟悉的话,可以翻看该文。     此时可以将这个用户物品对应的$m \times n$矩阵$M$进行SVD分解