Learning sparse network using target dropout(文末有代码链接)

摘要 当神经网络的权值的数量超过了从输入映射到输出需要的权值数量,神经网络会更容易优化。这里暗存了一个两个阶段的学习进程:首先学习一个大的网络,然后删除连接或隐藏的单元。但是,标准的训练并不一定会使得网络易于修剪。于是,我们介绍了一种训练神经网络的方法——target dropout(定向dropout),使其对后续剪枝具有较强的鲁棒性。在计算每次权值更新的梯度之前,定向dropout使用简单的自增强稀疏性准则,推测地选择一组要删除的单元或权重,然后计算剩余权重的梯度。所得到的网络对于删除集中经常出现的权值或单位的事后剪枝具有很强的鲁棒性。该方法改进了更复杂的稀疏正则器,实现简单,易于调优。 介绍 神经网络是一种功能强大的模型,可以在对象识别、语音识别和机器翻译等广泛任务上达到最新水平。其中原因之一是,神经网络强大的灵活性,因为它们有许多可学习的参数。然而,这种灵活性随之而来的是过拟合,并且会增加不必要的计算和存储压力。 在模型压缩的方法方面已经做了大量的工作。一种直观的策略是稀疏化:从网络中删除权重或整个神经元。在学习过程中,可以使用稀疏性诱导规则来鼓励网络稀疏化,比如L1,L0正则化等。也可以使用post hoc剪枝:训练一个全尺寸的网络,然后根据一些修剪策略进行稀疏化。理想情况下,从任务性能方面考虑,我们将删除为任务提供最少增益的权重或单元。一般来说,寻找最优集是一个困难的组合问题,即使是一个贪婪策略也存在不现实的任务评估数量,因为通常模型有数百万个参数。因此,常用的剪枝策略侧重于快速逼近,例如删除幅度最小的权重,或者根据任务性能相对于权重的敏感性对权重进行排序,然后删除最不敏感的权重。我们希望这些近似与任务性能很好地相关,这样剪枝就会产生高度压缩的网络,同时对任务性能几乎没有负面影响,但情况可能并非总是如此。 我们的方法是基于观察到dropout正则化,在训练过程中,它通过每次向前传递时对网络进行稀疏化来增强稀疏性容忍度。这鼓励网络学习对特定形式的事后稀疏化具有鲁棒性的表示形式,在本例中,是删除随机节点集。我们的假设是,如果我们计划进行显式的事后稀疏化,那么我们可以通过将dropout应用于我们之前认为是最没用的节点集来做得更好。我们称之为定向dropout。其思想是根据一些快速的、近似的重要性度量(如大小)对权重或单位进行排序,然后将dropout主要应用于那些被认为不重要的因素。与dropout正则的观察相似,我们表明,这使得网络去学习一种表示,其中权重或单位的重要性更接近我们的近似。换句话说,网络学会了对我们选择的事后剪枝策略保持了鲁棒性。 与其他方法相比,定向dropout的优势在于,它使网络对所选择的事后剪枝策略有鲁棒性,能够对所需的稀疏模式进行密切控制,并且容易实施。该方法在广泛的体系结构和数据集上实现了令人印象深刻的稀疏率;值得注意的是,在cifar10上,ResNet-32体系结构的稀疏性为99%,测试集精度下降不到4%。 背景 为了展示定向dropout,我们首先简要介绍了一些符号,并回顾了dropout和基于数值大小的剪枝的概念。 符号 假设我们正处理一个特定的网络架构,用 代表从候选集 中提取的神经网络参数向量, 是参数的个数, 表示参数为 的神经网络中权值矩阵的集合。因此, 是在网络连接层与层的权重矩阵。我们只考虑权重,为了收敛而忽略偏置,在剪枝过程中,偏置并没有移除。为简洁起见,我们使用符号 ,下标o表示连接下一层到第 个输出节点的权重(即权矩阵的第 列), 表示W中的列数, 指的是行数。每一列对应的是一个隐藏神经元,或者是或者卷积层的特征图。注意,压扁和连接所有的在 中的权重矩会恢复。 Dropout 我们的工作使用了两种最流行的伯努利dropout,分别是Hintion等人提出的节点dropout,和Wan等人提出的权重dropout(dropconnect),对于全连接层,输入为张量X,权重矩阵是W,输出张量为Y,掩模 ,我们定义两种技术如下: Unit dropout: 节点dropout在训练的每一步中,随机drop节点(通常认为是神经元)以降低以减少节点之间的依赖,防止过度拟合。 Weight dropout: 权重dropout在训练的每一步中随机drop单独的权重。直观地说,这是在减少层之间的连接,迫使网络在每个训练步骤中适应不同的连接。 基于数值的剪枝 一个比较常用的剪枝方式是基于数值的剪枝策略,这些策略认为,只有值最大的k个权重才是重要的,我们调用argmax-k从而可以获得考虑的所有元素中的top-k元素(节点或者是权重)。 节点剪枝: 考虑L2范数下权重矩阵的节点(列向量)(根据每一层的权重L2范数判定节点重不重要?) 权重剪枝:(根据权重的绝对值,判定权重重不重要) 而在较粗的剪枝下,权值剪枝倾向于保留更多的任务性能,节点剪枝允许相当大的计算节省。特别是权值剪枝网络可以通过稀疏线性代数运算来实现,它只在足够稀疏的条件下提供加速;当节点剪枝网络在较低维张量上执行标准线性代数运算时,对于给定的固定稀疏率,这往往是一个更快的选择。 定向dropout 考虑一个神经网络的参数为 ,重要性判别标准(上述定义的w( )),我们希望找到一个最优参数 ,这样loss函数 就会变小,同时, ,也就是我们只保留网络最大的k个权重。确定的剪枝函数,会挑出 个,并把它们dropout。但是我们希望的是,如果低的权重值在训练期间变得重要,那么它的权重值就应该得到增加。因为,我们在这个过程中引入了随机变量,一个是定向概率 和drop概率 ,定向概率指的是我们挑选最小的 个权重作为dropout的候选集,在里面我们独立地drop掉 %的元素。这意味着每一轮定向dropout后保持的节点数为 。接下来我们会看到,结果是减少了重要子网络对不重要子网络的依赖,从而减少了由于在训练结束时进行修剪而导致的性能下降。 重要子网络和不重要子网络之间的依赖关系 定向dropout的目标是降低重要子集对其补集的依赖。一个常用的看法是,dropout的目的是防止节点之间相互适应,也就是,当某一节点被dropout后,剩余的网络不能再依赖于该节点对函数的贡献,必须学会通过更可靠的渠道传播该节点的信息。另一种描述是dropout最大化了同一层中节点之间的相互信息,从而减少了节点丢失的影响。与我们的方法类似,dropout可用于指导表示的属性。例如,嵌套的dropout,根据与每个单元相关联的特定下降速率,在单元之间强加“层次结构”。Dropout本身也可以解释为贝叶斯近似。 在我们特定的剪枝场景中,我们可以从一个演示的例子中得到更相关的直觉,在这个例子中,重要的子网与不重要的子网完全分离。假设一个神经网络有两个互不重叠的子网络构成,每个子网络都能够自己产生正确的输出,网络输出作为两个子网络输出的平均值。如果我们的重要性准则认为第一个子网络重要,第二个子网不重要(更具体地说,它的权值更小),然后,给不重要的子网络(第二个)加上噪声(也就是,dropout)意味着在非零概率下,我们将破坏网络输出。因为重要已经可以预测出正确的结果,为了降低loss,我们必须将不重要的子网络输出层的权值降低到零,实际上,“杀死”了那个子网,并加强了重要子网和不重要子网之间的分离。 这些解释清楚了为什么dropout应该被认为是修剪应用的自然工具。我们可以通过比较训练好的网络和没有经过定向dropout的网络,并且检查黑森矩阵和梯度来确定网络对要修剪的权值/单位的依赖关系,从而实证地确定定向dropout对权重依赖的影响。如LeCun提出,我们可以通过考虑损失变化的二阶泰勒展开来估计剪枝权值的影响, (要去掉的权重)否则就为0,。 是loss的梯度,H是黑塞矩阵。在训练结束时,如果我们找到了临界点, ,并且, ,就只留黑塞矩阵一项。在我们的实验中,我们证明了目标target降低了重要子网络和不重要子网络之间的依赖性。 相关工作 神经网络的剪枝和稀疏化研究已有近30年的历史,由于在移动电话和asic等资源有限的设备上实现了剪枝和稀疏化,因此人们对神经网络的兴趣大增。早期的工作,如脑损伤(OBD)和optimal brain surgeon;最近的工作,有的利用二阶泰勒展开式对训练到局部最小值的权值周围的损失函数进行展开式,以收集选择参数剪枝顺序的策略。Han等人将权值量化与剪枝相结合,得到了令人印象深刻的网络压缩结果,大幅降低网络的空间成本。Dong等人通过各个分层独立的假设,提高了最优脑外科手术的效率。Wen等人提出在卷积滤波器上使用组Lasso,并且能够从ResNet-20网络中删除多达6层,从而增加1%的误差。 为了开发改进的剪枝启发式算法和稀疏化正则化器,已经付出了大量的努力,这些一般包括两个部分:第一种是将正则化方案纳入训练中,使重要的子网络易于识别为事后剪枝策略; 第二种是一种特殊的事后剪枝策略,它在预先训练好的网络上运行,去掉不重要的子网络。 和我们工作最相关的两个是L0正则化和变分dropout。Louizos等人改编了concrete dropout对网络权重进行调整,并调节dropout率,以使网络稀疏化。类似地,Molchanov等人将变分dropout应用于网络的权重上,并注意到前者通过选择较大的drop率隐式地稀疏了参数。除了我们的方法能更有效地缩小重要子网的大小,有针对性的dropout使用了两个直观的超参数, 和 ,并直接控制整个训练的稀疏性(即,达到预定的稀疏阈值)。相比之下,Louizos使用的hard-concrete使用了三个超参数,并且为每一个参数引入了门参数,使得可训练参数量翻倍。Molchanov等人增加了两个超参数,并将可训练参数的数量增加了一倍。在我们的实验中,我们也和L1正则化进行了比较,L1正则化的目的是使得不重要的权重趋近于零。

Cesium小记之加载暗黑色地图&&蓝色透明模型

一效果图“ 二、demo import Vue from 'vue' import App from './App' import router from './router' import Cesium from 'cesium/Cesium' import MeasureTool from '../src/js/MeasureTools' Vue.config.productionTip = false /* eslint-disable no-new */ new Vue({ el: '#app', router, components: {App}, template: '', mounted () { var viewer = new Cesium.Viewer('cesiumContainer', { baseLayerPicker: false // 是否显示图层选择器 }) var layer = new Cesium.MapboxImageryProvider({ mapId: 'mapbox.dark', accessToken: 'mapbox的token' }) viewer.scene.globe.enableLighting = false viewer.imageryLayers.addImageryProvider(layer) // 加载三维模型灰模 var tileset = viewer.

茹立云:深层网络搜索核心技术研讨

原文链接: http://www.cnblogs.com/zhoujg/p/5283371.html 【讲师】茹立云,搜索事业部总经理 【内容简介】 自google在90年代末推出搜索引擎引来,搜索引擎的技术有了长足的进步,尤其在搜索结果的及时性、精准性等方面有了很大突破。但是这十多年来,搜索引擎一直在搜索表层网络,面对于数据量百倍于表层网络的深层网络(暗网),搜索引擎一直没有好的解决方案,无论是国外的深层网络表层化处理方式,还是国内以人工运营为主的数据开放平台的处理方式,都未能从根本上解决深层网络的搜索问题。深层网络搜索到底面临哪些困难,深层网络的搜索是否有解? 转载于:https://www.cnblogs.com/zhoujg/p/5283371.html

深层网络搜索核心技术研讨

原文链接: http://www.cnblogs.com/zhoujg/p/5181334.html 自google在90年代末推出搜索引擎引来,搜索引擎的技术有了长足的进步,尤其在搜索结果的及时性、精准性等方面有了很大突破。但是这十多年来,搜索引擎一直在搜索表层网络,面对于数据量百倍于表层网络的深层网络(暗网),搜索引擎一直没有好的解决方案,无论是国外的深层网络表层化处理方式,还是国内以人工运营为主的数据开放平台的处理方式,都未能从根本上解决深层网络的搜索问题。深层网络搜索到底面临哪些困难,深层网络的搜索是否有解? 原文地址:http://www.infoq.com/cn/presentations/deep-web-search-core-technology 转载于:https://www.cnblogs.com/zhoujg/p/5181334.html

以太坊暗网? 这群北大才子做到了…

记者 | 乔治 出品 | 区块链大本营(blockchain_camp) 说到比特币暗网,你能想到什么?丝绸之路、华尔街市场、贩毒、杀人、情色交易,一直以来,这些都是经常被人诟病的一面。但事物都有两面性,“暗”的另一面,是对现实世界的真实解决方案,是利用“暗”的特性解决当前存在的某个痛点。 你知道比特币暗网,但你了解以太坊暗网吗? 为解决主流数字货币过于透明、隐私泄露等问题,一群北大高材生创建了这个“以太坊暗网”。“以太坊暗网”是什么?具有哪些特性?能帮你解决什么问题? 近期,营长对这个北大背景的技术团队进行了专访。让我们从他们的想法与实践中得到启发,了解区块链开发者正在做的事情。 来自北大的师兄弟团队 营长:简单介绍一下你的个人背景和创建 PGC 之前的工作经历。 PGC:我2011年北大博士毕业,一直念的计算机,做的是信息安全和网络安全。毕业后曾在中国电子科学研究院做综合电子信息系统的顶层设计,之后在一个做信息安全的上市公司待了一阵,然后就开始创业了。从 2016 年到现在,一直在区块链领域创业,既做过联盟链,也做过公链,既做过智能合约开发,也做过 DApp 开发。 营长:PGC 团队有很多北大背景的成员,这个团队是如何组建的? PGC:以北大的师兄师弟为主,他们是最核心的一些人,此外,我们也比较国际化,在英国伦敦、美国西雅图和德国斯图加特,也有一些远程协同办公的同事。 最初创业时,包括我在内团队只有两位主要成员,随着业务的开展,技术上需要的人才越来越多,我们优先从北大实验室和其他合作高校寻找技术人才,已经毕业的、没有毕业的、已经工作的、没有参加工作的师兄师弟,我们都联系了,好在他们对数字货币也比较认可,最后就加入到我们这个团队当中了。 因为数字货币、区块链不仅是密码学层面的事,还涉及到很多金融相关、市场推广、业务拓展的事,所以团队也需要一些业务层面的人才。我们在普华永道以及英国、澳大利亚、香港也有金融业、商业方面的同事,他们都远程加入了这个团队。所以我们算是一个以技术为主、业务上相对全球化的一个团队。 你根本不需要泄露密钥 营长:目前主流加密货币和现有隐私加密货币存在哪些问题?PGC 的解决方案是什么? PGC:主流加密货币的历史相对比较早了,它可能只解决了转账和记账的问题,从实际功能来看,就是把账算清楚,我给你转了多少币,你收到了多少币,只要算清楚就 OK 了,并没有考虑智能合约之类的其他功能。 一个新事物的诞生,肯定要先解决它的可用性,等它跑起来再去考虑它的安全性和隐私性。所以,最初几年大家主要关注这个币如何用起来、如何产生金融效应以及如何让更多用户使用等等。此后,随着用户越来越多、生态越来越成熟,就会出现安全和隐私问题。 目前来看,比较主流的几个币都不包含隐私属性,而最近比较火的 Grin 和 Beam 隐私币以及很早就有的门罗币、达世币、大零币 (Zcash) 等比较常见,门罗币和大零币已经存在一段时间了,也有相应比较大的市值,其价值也已经过一些验证,但仍存在一些问题。 比如,它需要一个可信的初始设置,最开始建立网络时,就需要进行这样一个操作,这个操作通常是很难做到,这是一个问题。此外,因为它不是无状态的,每一笔交易都需要记录一些相应的随机值和加密值,这样就导致它在钱包设计和账本设计里显得非常复杂。 虽然门罗币、达世币、大零币、Grin、Beam 等隐私币可以通过混币、环签名、零知识证明、MimbleWimble 协议等改进隐私性,但与 ETC、ETH 和 USTD 相比,它们毕竟是一个小众币,用的人不多,为享受隐私功能,把主流币换成这些隐私币,还是不太方便。 所以,PGC 的做法是将隐私功能赋予主流币,而不是再弄一个其它的币种,说这个币比其它都好,大家来用这个币。因为推广这个币确实需要很长时间和很大精力,与其这样,还不如在主流币上增加一个隐私层,即插即用,想用就用,不想用就不用。 另外,现有隐私币所追求的隐私性太强了,隐私性太强就会产生一些问题,比如,如果 A 给 B 转帐,只有 A 和 B 知道,其他人不知道,就可能存在这样一个问题:如果 A 和 B 对交易有争议,A 说转给 B 了,B 说没收到,或者 A 说转了 10 个,B 说转了 5 个,这该怎么办?

Graph Convolutional Neural Networks for Web-Scale Recommender Systems(用于Web级推荐系统的图形卷积神经网络)

Graph Convolutional Neural Networks for Web-Scale Recommender Systems 用于Web级推荐系统的图形卷积神经网络 ABSTRACT Recent advancements in deep neural networks for graph-structured data have led to state-of-the-art performance on recommender system benchmarks. However, making these methods practical and scalable to web-scale recommendation tasks with billions of items and hundreds of millions of users remains a challenge. Here we describe a large-scale deep recommendation engine that we developed and deployed at Pinterest. We develop a data-efficient Graph Convolutional Network (GCN) algorithm PinSage, which combines efficient random walks and graph convolutions to generate embeddings of nodes (i.

an网址集合 +搜索yq

From:https://blog.csdn.net/jsd2honey/article/details/62237768 此文针对很少涉及深网与暗网的读者。 主要内容包括:什么是深网和暗网,如何访问深网和暗网以及如何搜索暗网三大部分。 闲话少说,开始: 一、深网 深网是互联网上无法通过普通方法访问到的内容,这些普通的方法包括使用谷歌、百度等搜索引擎。深网的内容主要是一些需要某些条件如注册、付费,才能访问的内容,如数据库和某些服务。 下面是访问深网的工具: FreeLunch(免费午餐) 使用这个工具可以访问到经济学、人口学和金融方面的数据,普通搜索引擎的爬虫无法爬到的内容。 Shodan 这个搜索引擎在安全圈已经任人皆知了,有人叫它“撒丹”,也有人戏称之为“傻蛋”。不管叫什么,它搜索的内容是物联网社备。如包括摄像头、路由器等智能家居,还有一些工控系统等。国内类似的一个搜索引擎就是 ZoomEye,但后者全面些,还可搜索网站组件。 二、暗网 暗网简单的解释就是加密网络,它必需使用匿名代理工具才能访问。 有人认为暗网是一个丑陋凶险的地方,的确,暗网里有儿童色情和非法物品的售卖,比如武器和毒品。但这些人不知道的是,实际上这些邪恶的东西,只占暗网的很小一部分,大部分内容则是有价值的资料和信息。 2014年,一个慈善机构——互联网观察基金,与执法部门和互联网服务提供商合作清除儿童色情网站。他们共发现了3.1万个包含儿童色情图片的网址,但只有51个,即 0.2% 属于暗网。 还有人以为暗网是政府和执法机构很难触及的法外之地,对于这种认识,一个字足以回答:错。 下面是如何安装和使用访问暗网的工具TOR: 1. 下载Tor浏览器 https://www.torproject.org/projects/torbrowser.html 2. 安装后启动程序 3. 点击“Coonect”(连接),出现下面的窗口: 等待一会儿,Tor浏览器的窗口出现后,就能够开始暗网之旅了! 三、探索暗网 如何搜索暗网呢?下面是一些 基于 Tor网络 的 搜索引擎: Ahmia.fi 这是一个基础的Tor隐藏服务搜索引擎,内容不是很庞大,但做为暗网之旅的开始还是不错的选择。 普通URL: https://ahmia.fi 暗网URL: msydqjihosw2fsu3.onion Torch(火炬) 这是最好的Tor网络搜索引擎,有着巨大的数据库,约110万个页面。 暗网URL: http://xmh5752oemp2sztk.onion Grams 这个引擎是专门设计用来搜索暗网的,堪称暗网中的谷歌。 暗网URL: http://grams72tru2gdpl2.onion Not Evil(不做恶) 这是个简易搜索引擎,但,没有广告。 暗网URL: http://hss3uro2hsxfogfq.onion Sinbad Search(辛巴达搜索) 另一个拥有大型数据库的Tor搜索引擎。 暗网URL: http://sinbad66644fr5lq.onion 四、另一个暗网 上面介绍了Tor网络的访问,下面我们介绍一下另一张暗网,I2P。1. 下载 I2P:https://geti2p.net/en/download 2. 安装后并启动程序,即可看到 I2P 的路由控制台( Router Console ):

网站加密密码查看(或者破解)

从源代码中查看到的加密算法(MD5 单次加密) ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190705112059582.png public static string MD5(this string str) { if (string.IsNullOrEmpty(str)) { return string.Empty; } MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider(); byte[] arr = UTF8Encoding.Default.GetBytes(str); byte[] bytes = md5.ComputeHash(arr); str = BitConverter.ToString(bytes); //str = str.Replace(“-“, “”); return str; } 从数据库查询的加密文件 E4-ED-0F-5C-D9-6B-E5-F5-4B-79-86-3B-71-C8-11-61 https://pmd5.com/(MD5在线解密网址) 查询到用户admin的密码 Qwert

Android9.0网络兼容和依赖适配问题

客观来说,9.0兼容好像问题不是很大,很多的APP一点问题都没有,但是有些比较旧的APP就问题比较多了,下面简单写一下解决方法,本文纯属笔记,方便以后查看。 网络问题: 问题一 应对9.0 版本的网络明暗流量问题 设置一下 application (清单文件里面) 问题二 引用httpclient的报错 java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/commons/logging/LogFactory; Caused by: java.lang.ClassNotFoundException: Didn’t find class “org.apache.commons.logging.LogFactory” on path: DexPathList[[zip file “/data/app/com.inno.nestlesuper- oPFXtK6GZQsOCWb8lvmj2g==/base.apk”],nativeLibraryDirectories= [/data/app/com.inno.nestlesuper-oPFXtK6GZQsOCWb8lvmj2g==/lib/arm, /data/app/com.inno.nestlesuper-oPFXtK6GZQsOCWb8lvmj2g==/base.apk!/lib/armeabi, /system/lib, /vendor/lib]] 主要问题是 9.0版本谷歌不支持这两个网络包了需要自己导进去支持来规避兼容问题。 api files('libs/httpclient-4.3.6.jar') api files('libs/httpcore-4.3.2.jar') 然后 解决方法如下: 下载导入一个commons-logging的jar包 api files('libs/commons-logging-1.2.jar') 自此网络问题解决。 当然使用jar毕竟麻烦,时不时更新就需要改动,在此用新的方法: 在AndroidManifest.xml下的节点加入以下相关依赖(如果项目继续使用Apache的httpclient),这是因为httpclient在Android6.0就已经被废弃了,如果不想大变动我们可以将这个库强制依赖进来,避免报错。 同时在app目录下build.gradle的android节点加入httpclient依赖: useLibrary 'org.apache.http.legacy' Android9.0官方要求中,禁止传输接收没加密的数据,也就是说对网络数据传输这一块做了限制,我们需要在AndroidManifest.xml中的节点内加入网络安全配置: 其中network_security_config.xml在xml目录如下: 依赖问题 我们升级SDK编译版本和目标版本为28时,我们需要改动相应的依赖版本: implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:support-v4:28.0.0' 冲突Program type already present 下面是一个项目build.gradle中的依赖,我们简单做一下分类 网络相关 okhttp retrofit http-legacy 常用类库 rxpermission(权限监测) leakcanary(内存泄漏)

比特币增长周边以及去中心化应用

TD Ameritrade Network发推称,比特币激增时,泰达币也大幅升高;Tuur回应:新产生的泰达本质上就是反映出新资金流入比特币生态系统,99%的情况里,泰达增长,都意味着有资金流入比特币交易所。 针对比特币罪犯今年计划投入十亿美元进入暗网,Yan发推表示,像这种噱头新闻“今年非法活动总体占比不到比特币活动范围的1%,相比2012年的7%占比下降巨大”就不要出来唬人了。比特币增长,非法使用当然也会有所增长,尤其算上毒品交易的话。 谷歌已经不再只是信息搜索引擎了,它变成了思想操控的工具,因为它可以控制你能接触到什么样的信息。我们需要一个去中心化的搜索引擎。