首页
游戏
影视
直播
广播
听书
音乐
图片
更多
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
我的游戏
Search
1
virtuoso和empyrean alps模拟仿真和混仿教程
360 阅读
2
在IC617中进行xa+vcs数模混仿
301 阅读
3
文档内容搜索哪家强? 15款文件搜索软件横向评测
264 阅读
4
科普:Memory Compiler生成的Register file和SRAM有何区别?
258 阅读
5
通俗易懂的AI知识体系图及其产业链全景图
198 阅读
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
登录
Search
标签搜索
AI
python
Docker
vcs
PyQT
STM32
cadence
linux
systemverilog
EDA
Alist
vscode
uos
package
MCU
C
QT
CXL
sed
sv
bennyhe
累计撰写
387
篇文章
累计收到
33
条评论
首页
栏目
默认分类
芯片市场
数字电路
芯片后端
模拟电路
芯片验证
原型与样片验证
算法与架构
DFX与量产封装
PC&Server OS设置
移动OS设置
软件方案
新浪备份
有道备份
页面
游戏
影视
直播
广播
听书
音乐
图片
看书
微视
主播
统计
友链
留言
关于
论坛
邮件
推荐
我的云盘
我的搜索
我的记录
我的图片
我的图书
我的笔记
我的音乐
我的影视
我的邮件
我的游戏
搜索到
387
篇与
的结果
2025-08-07
IoT的核心:盘点下一代超低功耗节点黑科技
李飞的说2018年08月27日08:09随着物联网的逐渐铺开,人们已经在生活中看到了越来越多的物联网模块:智能水表,共享单车,等等。目前的物联网仍然主要由运营商推动,物联网模块需要使用标准蜂窝协议与基站通讯。由于基站需要覆盖尽可能大的面积,因此物联网模块需要能做到在距离基站很远时仍能通讯,这就对于物联网模块的射频发射功率有了很高的要求;从另一个角度来说,物联网模块在做无线通讯时仍然需要消耗高达30mA的电流,这使得目前的物联网模组仍然需要配合较高容量的电池(如五号电池)才能工作,这也导致了物联网模组的尺寸很难做小。为了能进一步普及物联网,必须克服这个功耗以及尺寸的限制。例如,如果未来要把物联网做到植入人体内,则不可能再搭配五号电池,而必须使用更小的电池甚至使用能量获取系统从环境中获取能量彻底摆脱电池的限制。为了实现这个目标,从通讯协议上说,可以使用更低功耗的自组网技术,类似BLE;而从电路实现上,则必须使用创新电路来降低功耗。能量获取技术根据之前的讨论,目前电池的尺寸和成本都已经成为了限制IoT设备近一步进入潜在市场的瓶颈。那么,有没有可能使用从环境中获得能量来支持物联网节点工作呢?这种从环境中获取能量来支持物联网节点工作的模块叫做“能量获取”(energy harvesting),目前能量获取电路芯片的研究已经成为了研究领域的热门方向。目前最成熟的能量获取系统可以说是太阳能电池。传统太阳能电池能提供较好的能量获取效率,但是付出的代价是难以集成到CMOS芯片上。最近,不少研究机构都在使用新型CMOS太阳能电池,从而可以和物联网节点的其他模块集成到同一块芯片上,大大增加了集成度并减小模组尺寸。当然,集成在CMOS芯片上的太阳能电池需要付出低能量输出的代价,目前常见的CMOS片上太阳能电池在室内灯光下能提供nW等级的功率输出,而在强光下能提供uW级别的功率输出,这就对物联网模组的整体功耗优化提出了很高的要求。另一方面,也可以将能量获取与小尺寸微型电池配合使用,当光照较好时使用太阳能电池而在光照较弱时使用备用电池,从而提升整体物联网模组的电池寿命。除了太阳能电池外,另一个广为人知的环境能量就是WiFi信号。今年ISSCC上,来自俄勒冈州立大学的研究组发表了从环境中的WiFi信号获取能量的芯片。先来点背景知识:WiFi的最大发射功率是30dBm(即1W),在简单的环境里(即没有遮挡等)信号功率随着与发射设备的距离平方衰减,在距离3m左右的距离信号功率就衰减到了1uW(-30dBm)左右,而如果有物体遮挡则会导致功率更小。俄勒冈州立大学发表的论文中,芯片配合直径为1.5cm的天线可以在非常低的无线信号功率(-33dBm即500nW)下也能工作给电池充电,能量获取效率在5-10%左右(即在距离发射源3m的情况下输出功率在50nW左右)。因此,WiFi信号也可以用来给物联网模组提供能量,但是其输出功率在现实的距离上也不大,同样也需要节点模组对于功耗做深度优化。另外,机械能也可以作为物联网节点的能量获取来源。压电效应可以把机械能转换为电能,从而使用压电材料(例如压电MEMS)就能为物联网节点充电。使用压电材料做能量源的典型应用包括各种智能城市和工业应用,例如当有车压过减速带的时候,减速带下的物联网传感器上的压电材料可以利用车辆压力的机械能给传感器充电并唤醒传感器,从而实现车辆数量统计等。这样,机械压力即可以作为需要测量的信号,其本身又可以作为能量源,所以在没有信号的时候就无需浪费能量了!压电材料的输出功率随着机械能的大小不同会有很大的区别,一般在nW-mW的数量级范围。唤醒式无线系统传统的IoT无线收发系统使用的往往是周期性通讯或主动事件驱动通讯的方案。周期性通讯指的是IoT节点定期打开与中心节点通讯,并在其他时间休眠;事件驱动通讯则是指IoT节点仅仅在传感器监测到特定事件时才与中心节点通讯,而其它时候都休眠。在这两种模式中,都需要IoT节点主动与中心节点建立连接并通讯。然而,这个建立连接的过程是非常消耗能量的。因此,唤醒式无线系统的概念就应运而生。什么是唤醒式无线系统?就是该该系统在大多数时候都是休眠的,仅仅当主节点发射特定信号时才会唤醒无线系统。换句话说,连接的建立这个耗费能量的过程并不由IoT节点来完成,而是由中心节点通过发送唤醒信号来完成。当建立连接的事件由中心节点来驱动时,一切都变得简单。首先,中心节点可以发射一段射频信号,而IoT节点可以通过能量获取(energy harvesting)电路从该射频信号中获取能量为内部电容充电。当IoT节点的电容充电完毕后,无线连接系统就可以使用电容里的能量来发射射频信号与中心节点通讯。这样一来,就可以做到无电池操作。想象一下,如果不是使用唤醒式无线系统,而是使用IoT主动连接的话,无电池就会变得困难,因为无法保证IoT节点在需要通讯的时候在节点内有足够的能量。反之,现在使用唤醒式系统,中心节点在需要IoT节点工作时首先为其充电唤醒,就能保证每次IoT节点都有足够能量通讯。那么,这样的唤醒式无线系统功耗有多低呢?在2016年的ISSCC上,来自初创公司PsiKick发表的支持BLE网络的唤醒式接收机在做无线通讯时仅需要400 nW的功耗,而到了2017年ISSCC,加州大学圣地亚哥分校发表的唤醒式接收机更是把功耗做到了4.5 nW,比起传统需要毫瓦级的IoT芯片小了4-6个数量级!来自UCSD的4.5 nW超低功耗唤醒式接收机反射调制系统唤醒式接收机主要解决了无线链路中如何低功耗接收信号的问题,但是在如果使用传统的发射机,则还是需要主动发射射频信号。发射机也是非常费电的,发射信号时所需的功耗常常要达到毫瓦数量级。那么,有没有可能在发射机处也做一些创新,降低功耗呢?确实已经有人另辟蹊径,想到了不发射射频信号也能把IoT节点传感器的信息传输出去的办法,就是由华盛顿大学研究人员提出的使用发射调制。反射调制有点像在航海和野外探险中的日光信号镜,日光信号镜通过不同角度的反射太阳光来传递信息。在这里,信号的载体是太阳光,但是太阳光能量并非传递信号的人发射的,而是作为第三方的太阳提供的。类似的,华盛顿大学研究人员提出的办法也是这样:中心节点发射射频信号,IoT节点则传感器的输出来改变(调制)天线的发射系数,这样中心节点通过检测反射信号就可以接收IoT节点的信号。在整个过程中IoT节点并没有发射射频信号,而是反射中心节点发出的射频信号,这样就实现了超低功耗。华盛顿大学的Shyam Gollakota教授率领的研究组在反射调制实现的超低功耗IoT领域目前已经完成了三个相关项目。去年,他们完成了passive WiFi和interscatter项目。Passive WiFi用于长距离反射通信,使用WiFi路由器发射功率相对较高的射频信号,而IoT节点则调制天线反射系数来传递信息。多个IoT节点可以共存,并使用类似CDMA扩频的方式来同时发射信息。interscatter则用于短距离数据传输,使用移动设备发射功率较低的射频信号,而IoT节点则调制该射频信号的反射来实现信息传输的目的。Passive WiFi和interscatter芯片的功耗都在10-20微瓦附近,比起动辄毫瓦级别的传统IoT无线芯片小了几个数量级,同时也为物联网节点进入人体内等应用场景铺平了道路。Passive WiFi(上)与Interscatter(下)使用反射调制,分别针对长距离与短距离应用。Passive WiFi和Interscatter还需要使用电信号因此需要供电,而Gollakota教授最近发表的Printed WiFi则是更进一步,完全不需要供电了!在物联网的应用中,许多需要检测的物理量其实不是电信号,例如速度,液体流量等等。这些物理量虽然不是电物理量,但是由于目前主流的信号处理和传输都是使用电子系统,因此传统的做法还是使用传感器电子芯片把这些物理量转化为电信号,之后再用无线连接传输出去。其实,这一步转化过程并非必要,而且会引入额外的能量消耗。Printed WiFi的创新之处就是使用机械系统去调制天线的反射系数,从而通过反射调制把这些物理量传输出去。这样,在IoT节点就完全避免了电子系统,从而真正实现无电池工作!目前,这些机械系统使用3D打印的方式制作,这也是该项目取名Printed WiFi的原因。上图是Printed WiFi的一个例子,即转速传感器。弹簧、齿轮等机械器件在上方测速仪旋转时会周期性地闭合/打开最下方天线(slot antenna)中的开关,从而周期性地(周期即旋转速度)改变最下方天线的反射特性,这样中心节点只要通过反射射频信号就能读出旋转速度。最下方的图是该传感器在不同转速时的反射信号在时间域的变化情况,可见通过反射信号可以把转速信息提取出来。超低功耗传感器物联网节点最基本的目标就是提供传感功能,因此超低功耗传感器也是必不可少。目前,温度、光照传感器在经过深度优化后已经可以实现nW-uW数量级的功耗,而在智能音响中得到广泛应用的声音传感器则往往要消耗mW数量级甚至更高的功耗,因此成为了下一步突破研发的重点。在声音传感器领域,最近的突破来自于压电MEMS(一个典型代表是脱胎于密歇根大学的初创公司Vesper)。传统的声音传感器(即麦克风)必须把整个系统(包括后端ADC和DSP)一直处于活动待机状态,以避免错过任何有用的声音信号,因此平均功耗在接近mW这样的数量级。然而,在不少环境下,这样的系统其实造成了能量的浪费,因为大多数时候环境里可能并没有声音,造成了ADC、DSP等模组能量的浪费。而使用压电MEMS可以避免这样的问题:当没有声音信号时,压电MEMS系统处于休眠状态,仅仅前端压电MEMS麦克风在待命,而后端的ADC、DSP都处于休眠状态,整体功耗在uW数量级。而一旦有用声音信号出现并被压电MEMS检测到,则压电MEMS麦克风可以输出唤醒信号将后面的ADC和DSP唤醒,从而不错过有用信号。因此,整体声音传感器的平均功耗可以在常规的应用场景下可以控制在uW数量级,从而使声音传感器可以进入更多应用场景。超低功耗MCU物联网节点里的最后一个关键模组是MCU。MCU作为控制整个物联网节点的核心模组,其功耗也往往不可忽视。如何减小MCU的功耗?MCU功耗一般分为静态漏电和动态功耗两部分。在静态漏电部分,为了减小漏电,可以做的是减小电源电压,以及使用低漏电的标准单元设计。在动态功耗部分,我们可以减小电源电压或者降低时钟频率来降低功耗。由此可见,降低电源电压可以同时降低静态漏电和动态功耗,因此能将电源电压降低的亚阈值电路设计就成了超低功耗MCU设计的必由之路。举例来说,将电源电压由1.2V降低到0.5V可以将动态功耗降低接近6倍,而静态漏电更是指数级下降。当然,亚阈值电路设计会涉及一些设计流程方面的挑战,例如如何确定亚阈值门电路的延迟,建立/保持时间等都需要仔细仿真和优化。在学术界,弗吉尼亚大学的研究组发布了动态功耗低至500nW的传感器SoC,其中除了MCU之外还包括了计算加速器和无线基带。在已经商业化的技术方面,初创公司Ambiq的Apollo系列MCU可以实现35uA/MHz的超低功耗,其设计使用了Ambiq拥有多年积累的SPOT亚阈值设计技术。在未来,我们可望可以看到功耗低至nW数量级的MCU,从而为使用能量获取技术的物联网节点铺平道路。结语随着物联网的发展,目前第一代广域物联网已经快速铺开走进了千家万户。然而,广域物联网节点由于必须满足覆盖需求,因此射频功耗很难做小,从而限制了应用场景(例如人体内传感器等无法使用大容量电池的场景)。局域物联网将会成为物联网发展的下一步,本文介绍的能量获取技术配合超低功耗无线通信、MCU和传感器可望让物联网节点突破传统的限制,在尺寸和电池寿命方面都得到革命性的突破,从而为物联网进入可植入式传感器等新应用铺平道路。来自微信
2025年08月07日
23 阅读
0 评论
0 点赞
2025-08-07
超逼真20张动图,秒懂四大电镜原理(SEM, TEM, AFM, STM)!
材料的显微分析能获得材料的组织结构,揭示材料基本性质和基本规律,在材料测试技术中占重要的一环。对各种显微分析设备诸如SEM、TEM、AFM、STM等,各位材料届的小伙伴一定不会陌生。最近小编发现一些电镜动画,被惊艳到,原来枯燥无味的电镜可以变得这么生动,闲言少叙,下面就和大家一起来分享。扫描电子显微镜(SEM)扫描电镜成像是利用细聚焦高能电子束在样件表面激发各种物理信号,如二次电子、背散射电子等,通过相应的检测器来检测这些信号,信号的强度与样品表面形貌有一定的对应关系,因此,可将其转换为视频信号来调制显像管的亮度得到样品表面形貌的图像。SEM工作图入射电子与样品中原子的价电子发生非弹性散射作用而损失的那部分能量(30~50eV)激发核外电子脱离原子,能量大于材料逸出功的价电子从样品表面逸出成为真空中的自由电子,此即二次电子。电子发射图二次电子探测图二次电子试样表面状态非常敏感,能有效显示试样表面的微观形貌,分辨率可达5~10nm。二次电子扫描成像入射电子达到离核很近的地方被反射,没有能量损失;既包括与原子核作用而形成的弹性背散射电子,又包括与样品核外电子作用而形成的非弹性背散射电子。背散射电子探测图用背反射信号进行形貌分析时,其分辨率远比二次电子低。可根据背散射电子像的亮暗程度,判别出相应区域的原子序数的相对大小,由此可对金属及其合金的显微组织进行成分分析。EBSD成像过程透射电子显微镜(TEM)透射电镜是把经加速和聚焦的电子束投射到非常薄的样件上,电子与样品中的原子碰撞,而改变方向,从而产生立体角散射。散射角的大小与样品的密度、厚度相关,因此,可以形成明暗不同的影像,影像将在放大、聚焦后在成像器件上显示出来。TEM工作图TEM成像过程STEM成像不同于平行电子束的TEM,它是利用聚集的电子束在样品上扫描来完成的,与SEM不同之处在于探测器置于试样下方,探测器接收透射电子束流或弹性散射电子束流,经放大后在荧光屏上显示出明场像和暗场像。STEM分析图入射电子束照射试样表面发生弹性散射,一部分电子所损失能量值是样品中某个元素的特征值,由此获得能量损失谱(EELS),利用EELS可以对薄试样微区元素组成、化学键及电子结构等进行分析。EELS原理图*本文来源于新材料在线®,内容仅为全部的1/2。完整版内容可下载最新版本新材料在线®APP查看2018-07-02来自微信
2025年08月07日
49 阅读
0 评论
0 点赞
2025-08-07
一份数学小白也能读懂的「马尔可夫链蒙特卡洛方法」入门指南
机器之心2017年12月24日12:46作者:Ben Shaver机器之心编译参与:黄小天、刘晓坤在众多经典的贝叶斯方法中,马尔可夫链蒙特卡洛(MCMC)由于包含大量数学知识,且计算量很大,而显得格外特别。本文反其道而行之,试图通过通俗易懂且不包含数学语言的方法,帮助读者对 MCMC 有一个直观的理解,使得毫无数学基础的人搞明白 MCMC。在我们中的很多人看来,贝叶斯统计学家不是巫术师,就是完全主观的胡说八道者。在贝叶斯经典方法中,马尔可夫链蒙特卡洛(Markov chain Monte Carlo/MCMC)尤其神秘,其中数学很多,计算量很大,但其背后原理与数据科学有诸多相似之处,并可阐释清楚,使得毫无数学基础的人搞明白 MCMC。这正是本文的目标。那么,到底什么是 MCMC 方法?一言以蔽之:MCMC 通过在概率空间中随机采样以近似兴趣参数(parameter of interest)的后验分布。我将在本文中做出简短明了的解释,并且不借助任何数学知识。首先,解释重要的术语。「兴趣参数」(parameter of interest)可以总结我们感兴趣现象的一些数字。我们通常使用统计学评估参数,比如,如果想要了解成年人的身高,我们的兴趣参数可以是精确到英寸的平均身高。「分布」是参数的每个可能值、以及我们有多大可能观察每个参数的数学表征,其最著名的实例是钟形曲线:在贝叶斯统计学中,分布还有另外一种解释。贝叶斯不是仅仅表征一个参数值以及每个参数有多大可能是真值,而是把分布看作是我们对参数的「信念」。因此,钟形曲线表明我们非常确定参数值相当接近于零,但是我们认为在一定程度上真值高于或低于该值的可能性是相等的。事实上,人的身高确实遵从一个正态曲线,因此我们假定平均身高的真值符合钟形曲线,如下所示:很明显,上图表征是巨人的身高分布,因为据图可知,最有可能的平均身高是 6'2"(但他们也并非超级自信)。让我们假设其中某个人后来收集到一些数据,并且观察了身高在 5"和 6"之间的一些人。我们可以用另一条正态曲线表征下面的数据,该曲线表明了哪些平均身高值能最好地解释这些数据:在贝叶斯统计中,表征我们对参数信念的分布被称为「先验分布」,因为它在我们看到任何数据之前捕捉到了我们的信念。「可能性分布」(likelihood distribution)通过表征一系列参数值以及伴随的每个参数值解释观察数据的可能性,以总结数据之中的信息。评估最大化可能性分布的参数值只是回答这一问题:什么参数值会使我们更可能观察到已经观察过的数据?如果没有先验信念,我们可能无法对此作出评估。但是,贝叶斯分析的关键是结合先验与可能性分布以确定后验分布。它可以告诉我们哪个参数值最大化了观察到已观察过的特定数据的概率,并把先验信念考虑在内。在我们的实例中,后验分布如下所示:如上所示,红线表征后验分布。你可以将其看作先验和可能性分布的一种平均值。由于先验分布较小且更加分散,它表征了一组关于平均身高真值的「不太确定」的信念。同时,可能性分布在相对较窄的范围内总结数据,因此它表征了对真参数值的「更确定」的猜测。当先验与可能性分布结合在一起,数据(由可能性分布表征)主导了假定存在于这些巨人之中的个体的先验弱信念。尽管该个体依然认为平均身高比数据告诉他的稍高一些,但是他非常可能被数据说服。在两条钟形曲线的情况下,求解后验分布非常容易。有一个结合了两者的简单等式。但是如果我们的先验和可能性分布表现很差呢?有时使用非简化的形状建模数据或先验信念时是最精确的。如果可能性分布需要带有两个峰值的分布才能得到最好地表征呢?并且出于某些原因我们想要解释一些非常奇怪的先验分布?通过手动绘制一个丑陋的先验分布,我已可视化了该情景,如下所示:可视化由 Matplotlib 渲染,并使用 MS Paint 做了改善如前所述,存在一些后验分布,它给出了每个参数值的可能性分布。但是很难得到完整的分布,也无法解析地求解。这就是使用 MCMC 方法的时候了。MCMC 允许我们在无法直接计算的情况下评估后验分布的形状。为了理解其工作原理,我将首先介绍蒙特卡洛模拟(Monte Carlo simulation),接着讨论马尔可夫链。蒙特卡洛模拟只是一种通过不断地生成随机数来评估固定参数的方法。通过生成随机数并对其做一些计算,蒙特卡洛模拟给出了一个参数的近似值(其中直接计算是不可能的或者计算量过大)。假设我们想评估下图中的圆圈面积:由于圆在边长为 10 英寸的正方形之内,所以通过简单计算可知其面积为 78.5 平方英寸。但是,如果我们随机地在正方形之内放置 20 个点,接着我们计算点落在圆内的比例,并乘以正方形的面积,所得结果非常近似于圆圈面积。由于 15 个点落在了圆内,那么圆的面积可以近似地为 75 平方英寸,对于只有 20 个随机点的蒙特卡洛模拟来说,结果并不差。现在,假设我们想要计算下图中由蝙蝠侠方程(Batman Equation)绘制的图形的面积:我们从来没有学过一个方程可以求这样的面积。不管怎样,通过随机地放入随机点,蒙特卡洛模拟可以相当容易地为该面积提供一个近似值。蒙特卡洛模拟不只用于估算复杂形状的面积。通过生成大量随机数字,它还可用于建模非常复杂的过程。实际上,蒙特卡洛模拟还可以预测天气,或者评估选举获胜的概率。理解 MCMC 方法的第二个要素是马尔科夫链(Markov chains)。马尔科夫链由存在概率相关性的事件的序列构成。每个事件源于一个结果集合,根据一个固定的概率集合,每个结果决定了下一个将出现的结果。马尔科夫链的一个重要特征是「无记忆性」:可能需要用于预测下一个时间的一切都已经包含在当前的状态中,从事件的历史中得不到任何新信息。例如 Chutes and Ladders 这个游戏就展示了这种无记忆性,或者说马尔科夫性,但在现实世界中很少事物是这种性质的。尽管如此,马尔科夫链也是理解现实世界的强大工具。在十九世纪,人们观察到钟形曲线在自然中是一种很常见的模式。(我们注意到,例如,人类的身高服从钟形曲线分布。)Galton Boards 曾通过将弹珠坠落并通过布满木钉的板模拟了重复随机事件的平均值,在弹珠的最终数量分布中重现了钟形曲线:俄罗斯数学家和神学家 Pavel Nekrasov 认为钟形曲线,或者更一般的说,大数规律只不过是小孩子的游戏和普通的谜题中的伪假象,其中每个事件之间都是完全独立的。他认为现实世界中的互相依赖的事件,例如人类行为,并不遵循漂亮的数学模式或分布。Andrey Markov(马尔科夫链正是以他的名字命名)试图证明非独立的事件可能也遵循特定的模式。他的其中一个最著名的例子是从一份俄罗斯诗歌作品中数出几千个两字符对(two-character pairs)。他使用这些两字符对计算了每个字符的条件概率。即,给定一个确定的上述字母或空白,关于下一个字母将是 A、T 或者空白等,存在一个确定的概率。通过这些概率,Markov 可以模拟一个任意的长字符序列。这就是马尔科夫链。虽然早先的几个字符很大程度上依赖于初始字符的选择,Markov 表明在长字符序列中,字符的分布会出现特定的模式。因此,即使是互相依赖的事件,如果服从固定的概率分布,将遵循平均水平的模式。举一个更有意义的例子,假设你住在一个有 5 个房间的房子里,里面有一个卧室、浴室、客厅、厨房、饭厅。然后我们收集一些数据,假定只需要当前你所处的房间和相应的时间就可以预测下一个你所处的房间的概率。例如,如果你在厨房,你有 30% 的概率会留在厨房,有 30% 的概率会走到饭厅,有 20% 的概率会走到客厅,有 10% 的概率会走到浴室,以及有 10% 的概率会走到卧室。使用每个房间的概率集合,我们可以构建一个关于你接下来要去的房间的预测链。如果想预测一个人处于厨房之后所在的房间,基于几个状态而做出预测可能有效。但由于我们的预测仅仅基于一个人在房子中的单次观察,可以合理地认为预测结果是不够好的。例如,如果一个人从卧室走到浴室,相比从厨房走到浴室的情况,他更可能会返回原来的房间。因此,马尔科夫链并不真正适用于现实世界。然而,通过迭代运行马尔科夫链数千次,确实能给出关于你接下来可能所处的房间的长期预测。更重要的是,这个预测并不受这个人起始所处的房间的影响。对此可以直观地理解为:在模拟和描述长期过程(或普遍情况)一个人所处房间的概率时,时间因素是不重要的。因此,如果我们理解了控制行为的概率,就可以使用马尔科夫链计算变化的长期趋势。希望通过介绍一些蒙特卡洛模拟和马尔科夫链,可以使你对 MCMC 方法的零数学解释有更直观的理解。回到原来的问题,即评估平均身高的后验分布:这个平均身高的后验分布的实例没有基于真实数据。我们知道后验分布在某种程度上处于先验分布和可能性分布的范围内,但无论如何都无法直接计算。使用 MCMC 方法,我们可以有效地从后验分布中提取样本,然后计算统计特征,例如提取样本的平均值。首先,MCMC 方法选择一个随机参数值。模拟过程中会持续生成随机的值(即蒙特卡洛部分),但服从某些能生成更好参数值的规则。即对于一对参数值,可以通过给定先验信度计算每个值解释数据的有效性,从而确定哪个值更好。我们会将更好的参数值以及由这个值的解释数据有效性决定的特定概率添加到参数值的链中(即马尔科夫链部分)。为了可视化地解释上述过程,首先强调一下,一个分布的特定值的高度代表的是观察到该值的概率。因此,参数值(x 轴)对应的概率(y 轴)可能或高或低。对于单个参数,MCMC 方法会从随机在 x 轴上采样开始。红点表征随机参数采样。由于随机采样服从固定的概率,它们倾向于经过一段时间后收敛于参数的高概率区域:蓝点表示当采样收敛之后,经过任意时间的随机采样。注意:垂直堆叠这些点仅仅是为了说明目的。收敛出现之后,MCMC 采样会得到作为后验分布样本的一系列点。用这些点画直方图,然后你可以计算任何感兴趣的统计特征:通过 MCMC 模拟生成的样本集合计算的任何统计特征,都是对真实后验分布的统计特征的最佳近似。MCMC 方法也可以用于评估多于一个参数的后验分布(例如,人类身高和体重)。对于 n 个参数,在 n 维空间中存在高概率的区域,其中特定的参数值集合可以更有效地解释数据。因此,我认为 MCMC 方法的本质,就是在一个概率空间中进行随机采样以近似后验分布。原文链接:https://towardsdatascience.com/a-zero-math-introduction-to-markov-chain-monte-carlo-methods-dcba889e0c50机器之心推出「Synced Machine Intelligence Awards」2017,希望通过四大奖项记录这一年人工智能的发展与进步,传递行业启示性价值。来自微信
2025年08月07日
33 阅读
0 评论
0 点赞
2025-08-03
自己搭建远程桌面服务器-RustDesk
1.RustDesk简介此软件主要功能为远程各种设备(其中包括Windows、macOS、Linux、iOS、Android、Web等)支持文件传输(可直接拷贝远程电脑的文件,类似向日葵的远程文件)支持内网穿透(支持端口映射,TCP/UDP,支持Windows默认远程桌面应用)最主要优点为可远程Android,本人最爱,简单配置,可帮助老家父母直接操控手机,解决他们使用手机过程中的问题2.同类型软件对比(我已知的)2.1 向日葵①网络差②不能高清分辨率③不支持自建服务器④使用第三方网络转发不安全⑤不支持内网穿透(端口映射)⑥不能满足所有设备(我知道的安卓就不可以)2.2 frp①部署不方便②只能使用Windows自带远程桌面③每次端口映射都需要修改配置文件并且重启服务④不能满足所有设备(好像只能电脑使用)2.3 TeamViewer不过多介绍 好多年就不用了(我记的疫情期间居家办公直接卡的要死,之后就没在用过)2.4 ToDesk/RayLink①不能满足所有设备(安卓不能使用)②不支持自建服务器③使用第三方网络转发不安全④不支持内网穿透(端口映射)————————————————1.拉取RustDesk镜像sudo docker image pull rustdesk/rustdesk-server阿里云加速使用这个sudo docker image pull thtom/rustdesk-server2.启动hbbs服务sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd:/root -td --net=host rustdesk/rustdesk-server hbbs阿里云加速使用这个sudo docker run --name hbbs -p 21115:21115 -p 21116:21116 -p 21116:21116/udp -p 21118:21118 -v pwd:/root -td --net=host thtom/rustdesk-server hbbs3.启动hbbr服务sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v pwd:/root -td --net=host rustdesk/rustdesk-server hbbr阿里云加速使用这个sudo docker run --name hbbr -p 21117:21117 -p 21119:21119 -v pwd:/root -td --net=host thtom/rustdesk-server hbbr4.查看Docker容器启动情况docker ps -a确认hbbs、hbbr容器为Up状态命令解释替换路径和域名的地方加了个[],是为了便于区分,替换的时候记得删除。“-p 26115:21115” : 26115 是docker宿主机(本机端口),21115 是RustDesk 的默认端口, 如果不修改默认端口 请使用“-p 21115:21115”,其他的端口映射类似--name 是定义了 docker 实例的名称,可以方便引用-v 是docker宿主机到容器内的文件映射“rustdesk/rustdesk-server hbbr” 是带 hbbr或者hbbs 参数启动-r [你的地址(IP/域名)]:26116 是 在你的指定端口监听 ,默认端口是 21116 开放端口默认情况下,hbbs 监听21115(tcp), 21116(tcp/udp), 21118(tcp),hbbr 监听21117(tcp), 21119(tcp)。务必在防火墙开启这几个端口, 请注意21116同时要开启TCP和UDP 。其中21115是hbbs用作NAT类型测试,21116/UDP是hbbs用作ID注册与心跳服务,21116/TCP是hbbs用作TCP打洞与连接服务,21117是hbbr用作中继服务, 21118和21119是为了支持网页客户端。如果您不需要网页客户端(21118,21119)支持,对应端口可以不开。TCP( 21115, 21116, 21117, 21118, 21119 )UDP( 21116 )加密key自定义key在上述的开启 hbbs和hbbr 命令中 后面加上参数 “-k [你的自定义key]”docker run --name hbbs -p 26115:21115 -p 26116:21116 -p 26116:21116/udp -p 26118:21118 -v [你的自定义地址/hbbs]:/root -td rustdesk/rustdesk-server hbbs -r [你的地址(IP/域名)]:26116 -k [你的自定义key]docker run --name hbbr -p 26117:21117 -p 26119:21119 -v [你的自定义地址/hbbr]:/root -td rustdesk/rustdesk-server hbbr -k [你的自定义key]获取默认key1.进入镜像sudo docker exec -it hbbs bash2.获取keycat ./id_ed25519.pub 测试你的 hbbs和hbbr 端口,确保防火墙放行客户端下载地址https://rustdesk.com/zh/https://github.com/rustdesk/rustdesk/releases 下载完成,需要安装才能配置自建的rustdesk服务器客户端的配置修改了端口的配置如下,如果使用默认端口 只需要在 ID服务器填上你的服务器地址,图中以上文端口为例在客户端两边均填写相同信息,便可以像TeamViewer一样访问了,可以使用下图中的配置的复制粘贴功能
2025年08月03日
55 阅读
0 评论
0 点赞
2025-07-30
短链接技术解析:链接的简化之道
前言大家在短信中是不是经常看到下面的短连接,简短易记:看到这个时你是不是也想把你手里长长的链接变换为这种简单的链接呢?这篇文章我们从短链接起源、短链原理、短链算法、应用场景几个方面从 0 到 1 实现一个短链接服务。起源短连接的发展可以追溯到互联网初期,当时用户在分享长URL时面临繁琐和不便。为了解决这一问题,短连接服务应运而生。最早的服务如TinyURL和http://bit.ly为用户提供了将长URL转换为短连接的便捷方式,成为了这一概念的奠基石。简而言之就是把任何长度的链接压缩成一个短链接,例如 http://t.cn/Ex4V08E 就是 https://www.toolsdaquan.com 的短链接。除了有微博短链接外,国内出名的还有百度短链接(dwz.cn),腾讯短链接(url.cn)等,国外有谷歌短链接(goo.gl),GitHub 短链接(git.io)等。短域名的解析过程短域名的解析过程包括以下步骤:DNS解析:当用户输入短域名访问网页时,首先需要进行 DNS 解析,将短域名解析为对应的 IP 地址。重定向技术:根据短域名所对应的长链接,服务器将发起一个重定向请求,将用户引导至原始的长链接地址。在重定向过程中,常用的状态码有 301 和 302,其中 301 表示永久重定向,而 302 表示临时重定向。通过以上步骤,短域名的工作原理得以实现,用户可以通过简洁的短域名访问到原始的长链接地址,实现了链接的简化和分享的便利性。原文链接:https://blog.csdn.net/fudaihb/article/details/138227442实现原理短链接服务包含两个部分:短链接生成和通过短链接访问原链接,主要流程如下:## 短链接生成 - 使用哈希算法、自增计数等将长URL映射到短标识符,并且短标识符应该足够短以便于记忆和传播。 ## 通过短链接访问原链接 - 一般使用 HTTP重定向的方式。当用户访问短连接时,服务器通过HTTP重定向将其引导至原始URL。1、客户端将短链接服务器传给短链接服务器,服务器根据Hash、自增等方式生成短链接返回客户端。2、客户端使用短链接进行请求,短链接服务器接受到请求后查询到对应的长链接并返回302让客户端重定向到原链接进行访问。常见短链接生成算法哈希算法使用哈希函数对长URL进行哈希运算,得到固定长度的哈希值,然后将哈希值截取为短标识符。常用的哈希函数有MD5、SHA-1、SHA-256等。这种方法的优势在于生成的标识符是固定长度的,且具有较好的均匀性,但哈希算法是确定性的,相同的输入始终产生相同的输出,这使得短链接相对可预测且不易记忆。import hashlib def generate_short_url(original_url): hash_object = hashlib.md5(original_url.encode()) short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符 return short_code自增计数使用一个自增的计数器作为短标识符。每次生成短连接时,计数器加一,将其转换为适当进制的字符串作为短标识符。这种方法简单直观,但可能存在预测性问题,容易伪造。class ShortURLGenerator: def __init__(self): self.counter = 0 def generate_short_url(self): short_code = base62_encode(self.counter) # 假设使用62进制 self.counter += 1 return short_code随机生成生成一个随机字符串作为短标识符。这种方法简单且不易被预测,但可能导致短标识符的冲突。import random import string def generate_short_url(): short_code = ''.join(random.choices(string.ascii_letters + string.digits, k=6)) return short_code基于关键字的生成使用关键字或自定义标识符作为短标识符,例如使用文章标题、关键词的缩写等,使短链接更具易记性,但可能导致短标识符的冲突。def generate_short_url_from_keyword(keyword): # 简化处理,可以使用更复杂的映射关系 return base62_encode(hash(keyword))上述是几种常见的短链接生成方式,大家可以根据自己的的场景选择合适的方案。短链接的作用字符空间节省短链接通过将长URL转换为短标识符,大大减少了字符空间的占用。这对于在字符数受限的平台,如短信、二维码等,是非常重要的。美化和简化短链接提供了更美观和易读的方式来分享链接。长URL通常包含大量的字符和参数,短链接使得链接更为整洁,提高了用户体验。个性化定制一些短链接服务提供了自定义短链接的功能,用户可以根据需要为链接添加个性化标识符,使链接更具个性。实现一个简单的短链接服务以下是一个基于 Python 的简单示例,使用 MD5 哈希算法来生成短标识符的短连接服务:import hashlib from flask import Flask, request, redirect app = Flask(__name__) url_mapping = {} def generate_short_url(original_url): hash_object = hashlib.md5(original_url.encode()) short_code = hash_object.hexdigest()[:8] # 截取前8位作为短标识符 return short_code @app.route('/shorten', methods=['POST']) def shorten_url(): data = request.get_json() original_url = data.get('url') if not original_url: return 'Invalid request', 400 short_code = generate_short_url(original_url) short_url = f"http://your-short-domain/{short_code}" url_mapping[short_code] = original_url return {'short_url': short_url} @app.route('/<short_code>') def redirect_to_original_url(short_code): original_url = url_mapping.get(short_code) if original_url: return redirect(original_url, code=302) else: return 'URL not found', 404 if __name__ == '__main__': app.run(debug=True) 示例中: /shorten 路由用于接收 POST 请求,生成短连接并返回短连接的 JSON 响应。 /redirect/<short_code> 路由用于接收短连接请求,根据短标识符重定向到原始URL。zhuanlan.zhihu.com/p/673800947
2025年07月30日
55 阅读
0 评论
0 点赞
1
...
21
22
23
...
78