从阿里云容器攻防矩阵&API安全生命周期,看如何构建金融安全云原生平台

浅谈云上攻防——云服务器攻防矩阵 前言 云服务器(Cloud Virtual Machine,CVM)是一种较为常见的云服务,为用户提供安全可靠以及高效的计算服务。用户可以灵活的扩展以及缩减计算资源,以适应变化的业务需求。使用云服务器可以极大降低用户的软硬件采购成本以及IT 运维成本。 由于云服务器中承载着用户的业务以及数据,其安全性尤为重要而云服务器的风险往往来自于两方面:云厂商平台侧的风险与用户在使用云服务器时的风险。与用户侧风险相比,平台侧的漏洞往往带来更广泛的影响,例如于2018 披露的AWS Launching EC2s di 阅读详情

【编者按】云原生技术正在助力银行通过差异化业务进行创新,却也带来了由于研发/运维人员对新架构不熟悉所导致的基础设施风险、业务风险及数据暴露风险。如何在飞速更迭的技术环境下保持业务持续发展,同时保证业务整体的安全性,满足不断增强的监管合规要求,其中蕴含着复杂的技术与管理挑战。

作者 | 王郁       责编 | 杨阳

出品 | 《新程序员》编辑部

在金融行业数字化转型浪潮下,从国有银行、股份制银行到各级商业银行,都纷纷步入云原生的进程。以容器、微服务、API为代表的云原生技术,重塑了云端应用的设计、开发、部署和运行模式,实现了自动化、易管理、可观测的全新DevOps体系,开发者和运维人员能够最大限度地提高生产力,更敏捷、更高效地进行应用迭代。但与此同时,云原生体系也带来了技术、产品、标准和生态系统的不断扩大,由此产生了新的基础设施暴露风险、通信风险和数据传输风险。为了满足云原生平台高可靠、高性能的基本保障,安全建设至关重要,但这又非常宏观,涉及到方方面面。新技术的诞生和应用必然面临着新威胁面的扩展与迁移,这也要求安全技术必须随着业务的技术架构做出即时改变,在新架构上实现安全能力的同步延展。

为此,本文将分别论述:云原生的底层弹性基础设施、容器平台和云原生体系的基础通信及数据传输体系、API在金融科技领域的应用所带来的威胁面,以及应对相关问题的分析方法和安全实践。

云原生的基础设施——容器平台的威胁面与安全监测技术

容器技术在金融行业的快速落地带来了弹性伸缩、快速部署等优势之外,也为业务系统安全带来了诸如容器逃逸、容器提权、镜像风险、管理平台暴露等崭新的攻击面,而开发和运维人员缺乏对容器的安全威胁和最佳实践的认识也可能会使业务从一开始就埋下安全隐患。

根据Tripwire的调研报告,60%的受访者在过去一年使用容器过程中至少发生了一起容器安全事故。在部署规模超过100个容器的使用者中,安全事故的比例上升到75%。由此可见,快速拥抱容器化带来的安全风险不容忽视。

以攻击者视角看待容器平台的威胁面

在实际云环境中,由于开发/运维人员对于容器集群安全机制的了解和配置能力不一,在账号创建、AK/SK部署、容器平台端鉴权等位置容易出现凭证泄露、管理平台暴露等风险,可能导致整个容器平台被攻击者获取控制权。我们也曾多次看到由此导致的严重基础设施入侵事件,对相关金融机构造成了严重损失。

如图1所示,从攻击的角度,目前行业内已经梳理了多个针对容器的威胁矩阵。以阿里云容器ATT&CK攻防矩阵为例,攻击者在其攻击流程的初始访问、执行、持久化、权限提升、防御逃逸、窃取凭证、探测、横向移动等阶段,分别可以对于容器产生的相关攻击进行尝试。

图1:阿里云容器ATT&CK攻防矩阵 

这些攻击手段分别从容器的不同暴露点位入手,结合不同的配置缺陷,窃取认证信息,以此获得持久化的控制权限,最终能够达到破坏容器集群系统及数据、劫持资源、拒绝服务和加密勒索的目的。

解决容器安全问题的三层面分析

面对容器带来的扩展威胁面,基于容器平台的层次架构,我们可以从以下三个层面来看待这个问题。

在容器及K8s层面,通常我们需要保证镜像安全、容器运行时安全、容器网络安全、权限安全等问题。另外,可进一步关注K8s的Pod安全策略。

在平台层,集群隔离、租户安全、用户隔离、网络ACL与访问控制、审计、DevSecOps、平台高可用等都是平台层面提供的安全能力。平台自身的漏洞扫描、组件漏洞等问题需要做严格的漏扫,做到有效处理。

在应用层,可通过DevSecOps在开发过程中为应用提供安全保障。另外,平台应提供应用高可用保障、应用安全接入、跨域策略、数据高可用等能力,为应用进一步提供安全保障。对于面向互联网的应用,可叠加前端安全设备的WAF、anti-DDOS、防注入等能力,进一步提升应用的安全性。

容器平台安全防护实践

云原生安全离不开容器安全,而容器的安全防护可从以下方面开始着手评估和实践。

基础设施层

操作系统安全:涉及容器云工作节点的操作系统要遵循安全准则。使用端口策略等安全措施,使用最小化操作系统,同时精简和平台不相关的预置组件,从而降低系统的攻击面。使用第三方安全工具,检测系统和应用程序的运行状态,实现进程和文件的访问控制等。

平台层安全

安全扫描:对容器调度和管理平台本身,需要先实现安全基线测试,平台安全扫描。

审计:对平台层用户操作进行审计,同时也需要项目层面的资源和操作审计。

授权:对平台实行权限控制,能基于角色/项目/功能等不同维度进行授权。

备份:定期备份平台数据。

容器安全

镜像安全:容器使用非root用户运行,使用安全的基础镜像,定时对镜像进行安全漏洞扫描。

运行时安全:主要是对容器在容器平台上运行过程中对于宿主机系统以内进行安全设置,例如容器特权、提升权限、主机PID、主机IPC、主机网络、只读文件系统等安全限制。同时,建议限制容器对于底层宿主机目录的访问,并设置其对于外部网络端口暴露的范围限制。用户限定某些敏感项目独占宿主机,实现业务隔离。

云原生的通信血液——API的威胁面与安全监测技术

随着金融行业数字化转型的深入,API作为云原生环境下的基础通信设施,在金融机构的离柜交易、移动支付、线上服务等多种业务中变得越来越高频多元。API作为驱动开放共享的核心能力,已深度应用于金融行业。与此同时,其巨大的流量和访问频率也让API的风险面变得更广、影响更大。

当下,由API传输的核心业务数据、个人身份信息等数据的流动性大大增强,因此这些数据面临着较大的泄漏和滥用风险,成为数据保护的薄弱一环,外部恶意攻击者会利用API接口批量获取敏感数据。而从金融的生态开放角度看,目前数据的交互、传输、共享等过程往往有多方参与,涉及到交易方、用户、应用方等多个主体,由此使得数据泄露风险点激增,风险环境愈发复杂。

以攻击者视角看待API的威胁面

对于API的威胁分析,行业内也有多个组织提出过相关的评估标准。如图2所示,OWASP在APISecurityTop10-2019框架中总结出,排名前十位的安全风险依次为:对象授权失效、用户授权失效、数据暴露过度、资源缺失和速率限制、功能级授权失效、批量分配、安全配置错误、注入、资产管理不当、日志与监控不足。

图2 OWASPTOP10-2021和OWASPAPISecurityTop10-2019的对比

从图中不难看出,API安全风险与网络应用风险高度重合(相同颜色的标记代表同类风险)。这就意味着,API除了自身的独特漏洞和相关风险外,也面临着基于网络的应用程序多年来一直在解决的同类问题。

结合当下金融科技领域API保护的实践场景,并对OWASPAPISecurityTop10中的风险进行合并与整合,以攻防角度来看,在落地层面主要有以下六点威胁。

水平越权:利用失效的对象授权通过遍历参数批量拖取数据,这是目前众多金融科技企业API设施所面临的最主要威胁。随着API生态和多方交互场景的落地,潜在的API越权缺陷极大程度地缩短了攻击者窃取金融敏感数据的路径,即攻击者只需找到一个可越权的API,无需经历复杂的打点渗透及横向移动即可窃取高价值的金融敏感数据。当下手机银行、微信银行、小程序、第三方业务开放的大量API接口由于开发规范不一,可能缺乏良好的鉴权认证机制(JWT/Token校验等),从而面临此类风险。

敏感数据暴露:脱敏失效,或一次性返回多余不必要的敏感数据。在金融行业重监管的背景下,为满足数安法、个保法及下属各地方/行业监管要求,需对个人用户隐私数据进行治理和合规管理,这对API需要识别、分类和脱敏的数据也提出了较高要求,但目前大量现存API缺乏相应的数据管控能力。

代码漏洞:SQL注入、命令执行等由业务开发者导致的风险。API接口本身容易受到代码漏洞的威胁,如各类型的注入、反序列化威胁等,由于金融行业API本身数量较多且连接性较强,需在开发过程中做好代码审计与相应的安全测试工作。

API基础设施漏洞:API后端中间件、基础设施漏洞,如Log4j2、APISIX漏洞。

错误配置:不安全、不完整或错误配置,如临时调试API、未鉴权API、存储权限公开、不必要的http方法、跨越资源共享等。

业务逻辑缺陷:无校验、无防重放、无风控策略、高并发导致条件竞争等。

API全生命周期安全防护实践

由于API的安全问题贯穿了从设计、管理到下线的全流程,因此也需要从整个API的生命周期来着手。如图3所示,表示如何在API生命周期的不同阶段落地相应的安全能力。

图3 API安全生命周期

 

设计阶段

在设计API之初,安全人员需要和产品、开发等角色对焦需求和设计方案,基于企业API安全设计规范,建设自动化威胁建模能力,将威胁建模加入API设计阶段,给出可能发生的风险解决建议和方案,同时根据业务安全损失及业务重要性对API安全设计进行分层,以不同的安全强度和研发成本适配不同的业务场景。

开发阶段

安全团队可针对API的安全风险,设计面向研发流程的安全开发规范文件,进行安全意识贯宣,同时提供认证、鉴权、数据访问等包含安全能力的插件或代码库,同时可以向CI/CD流程中植入白盒审计能力,将存在漏洞的代码通过安全开发规范和安全代码库收敛,降低人为因素引入漏洞的概率。

测试阶段

API场景存在大量的鉴权、越权、编码、加密问题对传统安全测试能力提出挑战。用web攻击的思路进行黑盒测试无疑收效甚微,目前fuzz工具针对API场景存在以下能力缺失:基于复杂协议解码(协议级解码+参数级解码)的参数污染、基于API访问顺序(调用链)的fuzz、基于认证状态的越权漏洞检测。

运行阶段

API安全监测需要从业务、数据、威胁三个视角进行能力建设,包括API的识别与管理、敏感数据流动监测、攻击事件监测、API异常行为监测等场景。通过实时流量分析的方案,可以针对API行为、访问者行为、访问拓扑等多维度对API行为进行建模,并结合API网关等安全设备,针对攻击特征及已经监控到的安全威胁进行阻断。

迭代与下线

我们需建设相应的API迭代发现能力,当API发生高风险迭代时,介入安全评审流程。此过程可以监控API的名称、参数、返回值、代码仓库变更,触发新一轮的安全自动化测试,并按照业务重要性分配安全评审人力资源。同时,旧版API如果没有被及时下线,不仅会浪费系统资源,还会变成潜在的线上风险,企业可通过API管理平台以及流量侧API行为发现失活、弃用的API,及时下线。

API运行时防护实践

此外,由于API本身涉及到云原生通信体系在金融科技领域的各项业务,较多API可能已经在未进行安全审计的状态下,越过了设计、开发、测试阶段直接处于运行时状态。对于这一部分已经投入生产的API,最好能够建立对于API安全的管控平台。如图4所示,对已有API进行风险监测、攻击防护、联动防御和智能分析。

图4:API运行时防护

在风险监测能力上,需要做好API清点,即安全管控平台要对每一个API进行清晰的记录,包括与什么类型的数据进行交互、所有者是谁、基础设施中的相关网络、物理资源是谁,以及它属于哪个应用程序或业务部门。

同时,在内容维度,需要能够识别API参数和有效载荷中的敏感数据类型,并适当地标记API端点。API承载了应用各组件间数据的流动,我们需要关注API携带了哪些敏感数据、对谁开放、对方如何使用这些数据等问题。企业被爆出数据泄露事件屡见不鲜,除了数据库被攻陷之外,其中很大部分是携带敏感数据的API鉴权出问题,导致外部攻击者通过不断访问API拖取敏感数据。

在攻击防护方面,需要能够阻止针对API协议的攻击,除了plainHTTP、REST等可复用传统安全能力的协议之外,仍有诸多协议标准,如GRPC、Dubbo、GraphQL等。还要能够阻断WEB攻击,尤其是针对OWASPAPI安全十大问题中定义的网络攻击。

此外,安全管控平台需要具备与各种业务系统整合联动的能力,应提供与常见IT和安全系统的整合,在发现网络攻击和数据安全事件时,联合所有资源进行处置。这种整合不应局限于基本的日志保存和数据传输,应智能地对事件进行优先排序,提供可操作的安全警报,并配合SOC和IT人员的工作流程。这意味着问题可以在被发现时自动分配给适当的团队或系统,不需要改变工作流程或不同的系统来检查。通常情况下,安全团队需要与IT、DevOps或业务部门合作来处置风险。

在智能分析能力上,可以在AI/ML的协助下高频收集和持续分析API流量,并与每个源IP地址、每个用户和每个会话的攻击行为联系起来。因为攻击者在早期都会被动地、隐蔽地进行目标探测,还通常对客户端应用程序代码进行逆向工程以了解后端API的功能以及如何与之通信。这种被动分析技术可以逃避大多数检测,因为它们通常是作为合法流量出现的。而API安全产品应该能够检测到这样流量的细微变化,达到早期攻击预防的目的。

结语

综上,云原生平台的安全建设并非一蹴而就,而是一个需要不断完善、迭代积累的过程,本文以容器平台的安全和API安全为例,分析威胁并给出相关的能力建设点。在实际的安全建设过程中,还会涉及到功能规划、平台运维、升级实施、安全保障、流程设计等一系列相关问题,在使用全新技术来赋能业务的同时,维护安全同样也是一个体系化的多维度工程。金融科技企业应从自身情况出发,有针对性地规避云原生改造过程中的安全问题,平稳且高效地实现金融级云原生平台的安全构建。

我们相信,云原生技术在金融科技领域的应用,必然向更加安全、可信的方向发展。

作者介绍

王郁

星阑科技CEO,清华大学网络空间研究院网络空间安全硕士。网络安全战队Blue-Lotus、TeaDeliverers前核心成员,HITCON、GEEKPWN国际黑客竞赛冠军,DEFCON-Finals Top3获得者,曾担任多个国际级网络安全赛事命题人及裁判,多个CyberSecurity研究成果发表于CCS等国际顶级安全会议。

浅谈云上攻防——国内首个对象存储攻防矩阵 前言 对象存储是云厂商提供的一种用来存储海量文件的分布式存储服务,可用于大规模存储非结构化数据。因为其具有高扩展性、低成本、可靠安全等优点,所以成为许多IT产业向云原生的开发和部署模式转变过程中不可或缺的一部分。 随着云上业务的蓬勃发展,作为云原生的一项重要能力,对象存储服务同样也面临着一系列的安全挑战。纵观近些年来的云安全漏洞,与对象存储服务相关的数据泄露事件比比皆是,以2017美国国防部承包商数据泄露为例: “Booz Allen Hamilton公司(提供情报与防御顾问服务)在使用亚马逊S3服务 阅读详情

相关推荐

《云原生安全攻防》-- 云原生攻防矩阵

在本节课程中,我们将开始学习如何从攻击者的角度思考,一起探讨常见的容器和K8s攻击手法,包含以下两个主要内容:云原生环境的攻击路径: 了解云原生环境的整体攻击流程。云原生攻防矩阵: 云原生环境攻击路径的全景视图,清晰每一步采取的攻击技术。在这里,我们梳理了一条相对完整的云原生环境的攻击路径,如图所示,通过这张图,我们可以清晰地看到整个攻击流程,大致可以将攻击路径拆分为六个步骤。初始访问:攻击者通过...

1078

面向云攻击的安全防护技术研究

云上的攻击方式和传统计算中心的攻击方式发生了很大的变化,传统的数据中心中因为存在大量违规开放的端口、补丁不及时应用、错误配置的中间件、未升级的操作系统以及混乱的网络隔离策略等问题,使得操作系统、中间件、软件应用程序、对外服务端口等都成为了攻击者的攻击入口,但是在云上由于IaaS、PaaS和SaaS等服务模式的不同,产生的安全漏洞和风险暴露面也不同。云计算的新时代,云安全不再是单纯的云安全资源池,本质上云安全资源池只是传统安全产品的虚拟化,不能解决当前云计算容器、镜像、容器编排平台等的安全问题。

weixin_70923796的博客 1212

owaspapisecuritytop10.pdf

2019年版 owasp api security top10 了解最新安全动态 安全资料

国内首个!阿里云发布容器ATT&CK攻防矩阵 | 凌云时刻

凌云时刻 · 技术导读:别人都关注你的容器弹得快不快,只有我在乎它弹得好不好。作者 | 徐越来源 |凌云时刻(微信号:linuxpk)前言2019年是企业容器化爆发的一年。据统计已经有...

云布道师 1218

ROS2多线程处理RTSP视频流避坑指南:OpenCV解码丢帧问题解决方案

本文针对ROS2中处理RTSP视频流时OpenCV解码丢帧的常见问题,提供了专业的解决方案。通过深入分析单线程模型的瓶颈,提出并详细拆解了基于生产者-消费者多线程模型的健壮实现方案,有效分离数据采集与处理,从而显著提升视频流的稳定性和流畅度。

weixin_29199873的博客 168

1.47寸ST7789V3彩屏硬件设计与驱动调试指南

TFT LCD是一种基于薄膜晶体管阵列控制像素明暗的主动式显示技术,其核心依赖于专用驱动IC(如ST7789V3)完成时序生成、GRAM管理与伽马校正。该类小尺寸彩色显示屏广泛应用于嵌入式HMI、IoT终端与可穿戴设备,具备高PPI、低功耗和SPI接口易集成等工程优势。理解RGB565数据格式、SPI Mode 0通信时序及关键寄存器(如0x36方向控制、0x3A像素格式、0x2A/0x2B地址窗口)是实现稳定显示的基础;而正确处理电源设计(严禁5V直供)、复位时序与背光PWM调光,则直接决定系统可靠性与能

weixin_30995917的博客 166

云安全攻防矩阵

1、云安全攻防矩阵tip。

Websec 424

2025最新聚合易支付官方完整版 – 全开源

2025聚合易支付5.0全开源版引领下一代智能支付革命,以"开放·智能·可信"为核心理念,成为全球首个通过量子安全认证的开源支付系统。该系统具备三大突破性创新:AI原生风控架构、跨链支付协议和零信任安全体系,支持百万级TPS处理能力。技术亮点包括Rust异步框架、Llama3风控模型、Polkadot跨链方案及IPFS分布式存储。提供量子安全支付、智能路由、元宇宙支付等六大功能,并通过开放原子基金会认证,构建了包含1200+全球开发者的开源生态。

meng1325200的博客 785

云安全攻防矩阵V3.0

https://cloudsecurity.tencent.com/home/

mingyqf的博客 437

Jetson Nano(1)——笔记本电脑控制

笔记本电脑控制Jetson Nano没有显示屏如何控制Jetson Nano一、使用ssh客户端连接到Jetson Nano的命令端1.将电脑的网线口和jetson nano的网线口通过网线连接2.在控制面版中打开“更改配适器设置”3.查找jetson nano的ip地址4.利用putty链接二、远程桌面配置 没有显示屏如何控制Jetson Nano Jetson Nano相当于一个微型电脑,能快...

weixin_43619070的博客 1万+

SAP交货单增强字段更新实战:手把手教你用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数

本文详细解析了如何使用BAPI_OUTB_DELIVERY_CHANGE和EXTENSION2参数实现SAP交货单增强字段的更新。从增强点SMOD_V50B0001的定位到字段落表的全流程,提供了ABAP代码示例和常见问题排查方法,帮助开发者高效完成交货单自定义字段的集成开发。

weixin_42525637的博客 455

云原生Att&ck矩阵

转载自:https://developer.aliyun.com/article/765449?groupCode=aliyunsecurity 一、云上容器ATT&CK攻防矩阵概览 ATT&CK®框架(Reference ATTACK Matrix for Container on Cloud)是网络攻击中涉及的已知策略和技术的知识库。为便于企业构建容器化应用安全体系,阿里云在传统主机安全的基础上,围绕自建容器集群以及云原生容器服务场景,通过全面分析黑客攻击Docker和K8s的过程和手段,推

weixin_45540609的博客 2784

【阿里云大模型高级工程师ACP习题集】2.4 自动化评测答疑机器人的表现(⭐️⭐️⭐️ 重点章节!!!)

【摘要】这是我精心整理出对应的习题集,里面足足有 30 道题目,从基础概念到深度拓展,全方位覆盖章节重点、难点。不管你是想检验自己的学习成果,还是想针对薄弱环节进行强化训练,它都能完美适配!

davidkorhenn的博客 2481

云上容器 ATT&CK 矩阵详解,阿里云助力企业容器化安全落地

作者 |阿里云容器安全专家,徐越(乐枕)责编 | 屠敏头图 | 优快云 下载自东方 IC出品 | 优快云(ID:优快云news)容器化带来的安全隐患过去的2019 年是企业容器化...

优快云资讯 6012

物理与工程中的‘黑话’:Kronecker delta和Levi-Civita符号到底简化了什么?

本文深入解析了物理与工程中常用的Kronecker delta和Levi-Civita符号的简化作用。通过对比传统表示与张量表示,展示了这些符号在向量运算、矩阵迹计算及流体力学模拟中的高效应用,显著提升计算效率和代码可读性。特别适合理论物理和工程数学领域的学习者与从业者。

weixin_27215403的博客 400

SAP_SD模块路径及运输功能后台配置简介

后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义传输模式根据实际运输过程运输地理的类型:海运、公路运输、空运后台路径:SPRO—后勤执行—装运—基本发运功能—定义路线—定义发运类型根据实际运输过程运输方式:汽车、卡车、火车、轮船、飞机后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义运输连接点指在运输过程中需要中转的地区可以维护中转地区的停留的时间后台路径:SPRO—后勤执行—装运—基本发运功能—路径—定义路线—定义路径和阶段。

我小时候很黑的博客 1401

从OWASP API Security TOP 10谈API安全

API安全是个持续的过程,要求开发者、操作和安全团队协作确保API面临的风险得到恰当管理。遵循OWASP API Security Top 10是创建一个更安全API生态系统的基础。在构建API时,要确保考虑到这些主要的安全问题,并在API的整个生命周期中持续关注安全保障。参考:OWASP API Security TOP 10中文项目 2023OWASP API Security TOP 10中文项目 — OWASP-CHINA。

qq_33163046的博客 3840

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

安全矩阵(Security Matrix)网站说明

安全矩阵是一个以数学、密码学及其信息安全技术研究为主的学术技术站点,主要讨论的是数学、密码学、信息安全技术、软件开发的理论、技术原理及其代码与实现,不讨论攻击网站的实践和攻击程序如何使用(包括木马,病毒,黑客程序)。我们要做的是一个学术与技术的研究者,而非骇客和娱乐界人士,不接受媒体采访,不接受商业广告,不接受商业赞助,所有费用由站长自行想办法解决。 网站地址:www.smatrix.org

kvew的专栏 4257

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

腾讯云鼎实验室发布云安全攻防矩阵,绘制九大攻防路径全景图

随着云计算技术和产业的蓬勃发展,企业上云已是数字化转型的必然趋势。但云上千般好,却也给企业带来了全新的安全挑战。云平台不仅要应对传统网络架构中存有的DDoS、入侵、病毒等常态问题,还要高度重视技术架构中虚拟机逃逸、资源滥用、横向穿透等新安全问题。 守护云上安全,是数字时代的重中之重。9月26日,2021首届-西部云安全峰会在西安成功举办。会上,腾讯安全云鼎实验室首次披露云端攻防最新成果——云安全攻防矩阵。该矩阵基于MITRE ATT&CK®框架,针对云上安全所面临的威胁以及攻击技术进行整理,从实战

优快云云计算 3415

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

好书推荐 | 详解云安全攻防模型,这些攻击战略和战术越早知道越好(送书福利)...

云计算在带来便利的同时,也带来了新的安全技术风险、政策风险和安全合规风险。那么,如何设计云计算安全架构、如何保障云计算平台的安全合规、如何有效提升安全防护能力是需要研究的重要课题。本文...

Ms08067安全实验室 549

OWASP API Security Top 10解读

福兮祸之所倚,API在给企业数字化转型带来巨大便利的同时,也带来了新的安全挑战。

trusfort的博客 870

OWASP API Security Top 10 与 OWASP ZAP安全测试工具的使用

OWASP API Security Top 10 与 OWASP ZAP安全测试工具的使用

杜盟恩的博客 2843
上一篇: 被欧美公司垄断近 20 年,中国工业软件的机会在哪里?
下一篇: 47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值