学会学习

元学习:AI如何学会学习 元学习:AI如何学会学习 1. 背景介绍 人工智能(AI)技术近年来取得了飞跃发展,从AlphaGo战胜人类围棋冠军,到GPT-3生成高质量文本,再到AlphaFold2预测蛋白质结构,AI在各个领域都展现出了强大的能力。然而,当前主流的AI系统大多依赖于大量的训练数据和计算资源,缺乏灵活性和迁移能力。如何让AI系统能够像人类一样,通过 阅读详情

学会学习

《学习之道》读后感。在这里简单分享书本的大体内容和结合自身学习经历与大家共同探讨“如何学习”这个话题。

《学习之道》

作者芭芭拉•奥克利(Barbara Oakley)是美国奥克兰大学的工程学教授,她所开设的“Learning How to Learn”课程是在线网络教育平台Coursera上最受欢迎的课程之一。 但她从小对数理深恶痛绝,高中数理课程一直不及格,在工作变动下被迫重新学习数理知识,最后成为工程学教授。而《学习之道》正是她从自身经历出发总结出的一系列学习法则,并尝试从科学的角度论证这些法则。下面我将简单介绍书中的重点内容,更详细的地方还请阅读原著。

专注思维与发散思维

请想象一个手电筒,开启远距离模式时,视野相对窄,但照射距离远,而开启近距离模式时,视野则相对宽广,但照射距离近。如下图所示。我们大脑同样有两种思维模式:专注思维与发散思维。专注思维相当于手电筒的远光模式,我们通常只关注很小的一个点,但会思考得比较深入;发散思维则是近光模式,关注范围比较广,但考虑得比较浅。

这里写图片描述

当我们着手处理一件事情的时候,大脑会启动专注思维模式,聚焦达成这件事所需要的信息。而当我们在跑步、洗澡、吃饭等注意力相对分散的时候,大脑会以发散思维在运作。这两种思维没有好坏之分,大脑常在两种模式中来回切换,但理解这两种思维模式及其切换过程将对我们的学习有所帮助。大家是否都有这样的经历:“上午冥思苦想都没有定位到bug,却在午饭排队点餐时不经意的一瞬间想到。”冥思苦想是在专注地思考问题,而排队点餐玩手机则是发散思维,为什么发散思维下更容易灵光一现?大家可以看回上面的图,发散模式虽然观察得不细致或思考得不深入,但是观察范围广,冥思苦想没有找到答案往往是因为答案不在你专注思考的那个点上,切换到发散思维,将思考范围放大,更容易找到答案。一句话总结:专注思维在超小解空间中找答案,而发散思维面对的是更大的解空间。

因此,作者建议我们在冥思苦想找不到答案的时候,先放下这个问题,去做点别的事情,灵感很容易会出现。

组块与回想

为了和大家讲解大脑是如何解决问题的,作者引进了组块这个概念。个人觉得组块可以理解为:大脑对一类知识的存储空间。设想一下你正站在台上演讲,你的脑海里会关注三点:语言表达、肢体动作和眼神交流。这三点可以理解为三个组块,例如语言表达组块存储了演讲中语言表达的技巧等相关知识。如下图所示,大脑执行演讲这个任务时,需要使用到这三个组块的知识,演讲效果如何,就看这三个组块里的知识是否全面,是否牢固。

这里写图片描述

组块是一类知识的存储空间,那什么是回想,回想是构建牢固组块的关键方法。读书的时候,课堂上听老师讲课或者课下自己看教材,很容易就觉得自己学会了,可是一旦做练习题时,发现根本不会,或者做起来不顺畅,这又是什么原因呢?解决问题需要相关的几个组块,同时组块里的知识要全面和牢固,刚学完的知识(填充到组块中)往往没那么牢固,大脑可能只是知道有这个东西存在,而这个时候,我们往往会进行自我欺骗:“我看完这部分内容我就会了,我看过我就记住了。”实际上并不是这样的,不信你现在就可以回想一下,这篇文章上文说了什么?能详细地回想起来吗?这里再给大家举一个我平时在字帖上练字的例子,为什么在字帖上都能写得像模像样,但在白纸上则写得奇奇怪怪。原因在于在字帖上写字时,总以为自己写过就记住了各个笔画,整体结构,其实闭上眼睛,在脑海里想象这个字,会发现诸如笔画倾斜角度、间距和长度等细节都没有记住,难怪在白纸上会写不好字。

回想是一种检验是否掌握知识的方法,其本身也是一种掌握知识的方法。学习完一部分知识后,不要欺骗自己——“我会了,我记住了”,闭上眼睛尽可能回想一下这部分内容,回想完后再快速浏览一遍,看是否有遗漏,然后再回想一次。牢固、全面的知识组件是解决相关问题的必要前提,应多利用回想来补全组件的相关知识和强化组件。

拖延

说到拖延大家都熟悉,甚至深有体会,这里少说一些:

  1. 很多实践过的知识打算沉淀到KM上,但是一直没写;
  2. 早上过来上班先刷刷朋友圈再开始工作;
  3. …

为什么会产生拖延?拖延的本质在于要做的事情有一定的难度,而诸如刷微信、刷微博、逛淘宝等简单且能快速获得奖励(内心很开心)的诱发因素又很多,于是按常理,事情总是朝着阻力最小的方向发展,结果产生拖延。

那如何避免拖延呢?书里提出了一些解决方法,大家可以按需选择适合自己的:

  1. 改变环境:主动减少诱发因素,例如把手机调静音,带上降噪耳机等;
  2. 难事先行:在能力范围内优先做困难的事情(能力范围外做不到的事情就没必要优先做啦),难事先行一是确保了有足够的时间来处理困难的事情,二是容易给处理后续的事情带来信心;
  3. 关注过程 / 番茄工作法:很多被我们拖延的事情在我们心里都觉得要达成结果很难,但如果先不看结果,先动手去做,会发现每一步都很清晰,并没有自己想象中这么困难,最终也能做出不错的结果。番茄工作法在这不多介绍,主要一套确保间隔性地专注过程的工作方法;
  4. 奖励机制:想象一下完成这件事情带来的好处,畅想一下自己美好的未来,会给自己增添动力;
  5. 提前计划:让自己对要处理的事情有宏观的认识,即使还没有动手做,大脑在发散思维模式下也会抽空思考这些事情的解决方法。举个栗子,情景一:产品周五上午给你提了需求,要求下午完成;情景二:产品周一给你提同样的需求,你周五上午开始做,同样是下午完成;两种情景下,我们通常喜欢情景二,因为有足够的时间去思考怎样做才是最合理最完美的。(然而现实中经常上演情景一…)

记忆方法

书中提到几种记忆方法,核心是教大家如何快速地把内容记住,再根据遗忘规律(请参考下图中的遗忘曲线,刚接触新知识时遗忘速度较快,随着时间推移,遗忘速度渐渐变慢),在适当的时间点复习记忆内容,达到长期记忆的效果,也就是构建牢固组件。

这里写图片描述

简单列举一下书中的方法:

  1. 视觉图像法:试着创造一种便于记忆的视觉图像来代替想要记住的关键内容,将抽象化为具象,例如将电流比喻做水流;
  2. 记忆宫殿法:回想一个熟悉的空间(例如自己的房间、桌面),然后想象在这个空间里放置你所需要记忆的内容。例如我们读书分享会上雪青姐分享如何利用记忆宫殿法记住上面避免拖延的几种方法:“早上刚到公司楼下,发现在楼下搞活动,于是赶紧走进大堂,避免被吸引(改变环境);在大堂走向电梯时,想到自己该多运动一下,于是走向了楼梯上十楼(难事先行);回到自己座位上,打开番茄钟开始工作(关注过程/番茄工作法);辛苦工作一天终于把任务都完成了,想着晚上能回家陪伴家人,明天也更有信心处理好新的挑战,真是开心(奖励机制);晚上回家前,先把明天要做得事情列个TODO List,再调整轻重缓急,放心回家(提前计划)。”
  3. 顺口溜助记:参考谷歌搜索-中国朝代顺口溜;
  4. 肌肉记忆:背单词时,动手书写要比口中默念记得更牢;
  5. …

一句话总结,记忆技巧很多,核心在于利用技巧快速记住和根据遗忘规律高效复习强化记忆。

如何学习

全书在微信读书上有600页,阅读耗时7小时30分钟,有些章节会给我惊喜和启发,有些章节则会给我似曾相识的感觉。整体看完后个人感觉,比较散,就好像“听过很多道理,依然过不好这一生”,也许有些东西不是书本能直接给到我们的。看完后我不禁问自己:我是如何学习的,我的学习方法是否正确高效?下面来谈谈我的学习方法论。

这里写图片描述

方法论

针对某一项技术或者某个新的领域,我的学习过程可以抽象成下面六步:明确学习目标、建立宏观认识、搭建知识框架、动手尝试、解决问题和总结分析。具体学习流程可参考下图,下面我将以自己学习Chromium的过程为例和大家分享。

这里写图片描述

一,明确学习目标

出发点很重要,没有出发点也就没有终点。在学习开始前,我们要先明确,我学习这个知识是为了什么?是为了学会怎么使用还是为了深入了解背后的原理,自己参与创造?不同的学习目标往往对应不同的学习结果,也对应了不同的学习要求。例如我要学习Chromium,我的目标就是理解浏览器渲染原理,学习渲染优化策略,以便写出性能更好的前端代码。

二,建立宏观认识

我小时候下象棋,只会盯着眼前的一小步,很少去考虑后面几步的事情,因此常常输得一塌糊涂。缺少宏观认识,不利于我们把握整体局势,没有把握整体局势,就很难理解——“为什么要这样做?为什么我的做法有问题?”。越是复杂的事情,我们越要从更高层去理解。

Chromium项目作为Chrome浏览器和Chrome OS的开源核心,代码量十几个GB,用工作站首次编译也需要两个多小时(16年编译过,具体数据已经不确定),是个非常庞大复杂的项目。学习复杂项目或者复杂技术时,我们常常无从下手,就像突然给你一个十层楼高的巨型汉堡包,根本不知道从哪下口。这个时候我们先不急着去看代码,可以先去思考,这项技术解决了什么问题?底层是怎么实现的?

Chromium是一个开源浏览器,解决了web资源渲染到用户界面的问题,而底层通过C++完成词法解析,渲染树构建,利用Skia跨平台2D绘图库绘制用户界面。这只是粗浅的认识,要建立靠谱的宏观认识,最好还是从官方设计文档入手,例如Chromium的设计文档,里面会说到系统有哪几个模块,模块间是怎么通信的,代码是怎么组织的等等一系列从顶层设计考虑的问题。前期的宏观认识会让后期的学习事半功倍。

三,搭建知识框架

既然前面对所学的内容有了宏观的认识,那我们就要开始分解内容,看看涉及到哪些知识点。还记得前面关于演讲的例子吗?假如我们要学习演讲,那可以将演讲分为语言表达、肢体动作和眼神交流三部分,每一部分都是一个知识组块。通过学习往知识组块里填充知识,反复记忆应用强化组块。搭建知识框架就两步,切分知识点(划分组块),逐一学习知识点(填充组块)。很多时候我们没能解决一个问题,是因为我们缺少某一部分知识,例如我们不能完成一次高质量的演讲,有可能是肢体动作这一部分出了问题。

Chromium的知识框架比较复杂,这里简单说几个渲染相关的:①C++;②词法解析;③Skia绘图;④… 有时候不得不承认,知识的海洋如此浩瀚,以至于我们这辈子可能都学不完,但由于我们有明确的学习目标,我们可以聚焦实现该目标相关的知识内容,在这个范围内搭建小的知识框架,实现我们的目标。

四,动手尝试

终于走到动手尝试这一步了,以前没有章法地学习时,我都是直接跳到这一步的,虽然瞬间满足了自己动手写码的心愿,但是往往因为对问题理解不深入而掉进各种各样的坑里面,浪费了很多时间。

这里的动手尝试并不是指你要马上解决自己的问题,实现自己的学习目标,而是说先去跑个官方Demo,或者能用的Demo,运行成功后,在Demo的基础上尝试按照自己的理解改一下,再看看效果。这一步虽然看起来可有可无,但是在别人成功的基础上做改动做尝试成本更低,能更快地验证自己的理解是否到位,在复杂项目中这一步的技术预演能给后面节省很多环境配置等踩坑的时间。

在我学习Chromium时,别说动手改代码了,单是学习如何构建编译Chromium都花了我一天的时间,在确定编译出来的Chromium浏览器能用的基础上,我尝试将浏览器里的DOM元素背景上半部分绘制成红色,下半部分绘制成蓝色,尝试成功,说明我对Skia绘图以及渲染对象基类的绘制函数理解正确,能继续搞更大的事情。

五,解决问题

这一步可以说是水到渠成,如果还遇到什么问题,请退回到第三步,认真思考自己还遗漏什么知识点,去补全。如果还是不能理解问题,那建议退回第二步,去思考:“为什么是这样的”,尝试在官方那里找到答案。如果都没有效果,建议先暂时放下,切换到发散思维,让大脑在后台慢慢思索。

六,总结分析

好不容易学完了,也解决了自己的问题,先给自己一些掌声,甚至可以先去浪一波,甚至到此结束也没有问题。但为了日后能更高效地学习更复杂的知识,我们还可以总结,还可以提高。主要有两个方面,一是将自己学到的知识总结下来(当你真正去回想自己学过的知识时,你脑海里的印象会真实地告诉你,你是否掌握),二是可以思考为什么之前会失败,是因为知识遗漏?还是因为没有将组块交叉使用?后面怎样才能避免这些问题,更快地成功?

The End

全文作为《学习之道》读后感,仅为个人观点,不排除存在阅读理解偏差的情况。至于个人的学习方法论,也只是一个95后的狂妄之言,欢迎一起交流学习,如有任何问题也欢迎指出批评。

同时期待下一期的读书会。毕竟学习和思考本身,比学习所得更重要。而一群人一起学习交流,则能获得更大的启发,欢迎大家加入!

元学习(Meta-learning):让AI学会如何学习 元学习旨在通过学习多个相关任务的经验来提高模型在新任务上的学习效率和性能。跨任务学习:从多个任务中提取通用知识快速适应:在新任务上实现快速学习少样本学习:使用较少样本就能完成学习元学习代表了机器学习发展的一个重要方向,它试图解决如何让AI系统更智能地学习的问题。通过"学习如何学习",元学习为构建更加通用和高效的AI系统提供了新的思路。随着研究的深入和技术的发展,元学习将在未来的AI应用中发挥越来越重要的作用。 阅读详情

相关推荐

元学习分类:学会如何学习

元学习分类:学会如何学习 作者:禅与计算机程序设计艺术 1. 背景介绍 在快速发展的技术世界中,学习能力已经成为每个人必备的核心能力。不管是从事何种职业,我们都需要不断学习新的知识和技能,以适应瞬息万变的行业需求。然而,传统的学习方式往往过于被动和枯燥,很难真正掌握所学内容。相比之下

AI天才研究院 1132

读书笔记《学习之道》芭芭拉·奥克利 - 三 最后总结

使用作者的最后一章进行这篇读书笔记的结束语,因为书中描述的所有内容如果做不到也并卵,所以如果能按某些条作者最后总结的这些精炼的法则进行学习,也应该有不错的学习效果了。 10个好的学习法则 1. 运用回想。读完一页书,看向别处并回想主要观点。少做标记,没记住之前不要画重点,要先回忆。在去教室的路上或不同于先前学习空间的室内,试着回忆要点。回忆的能力,即能够得到自己心中的想法,是学好知识的关键标志之一。 2. 自我测试。任何内容皆可测试。无论...

学以致用 知行合一 893

学会学习ppt

大学生介绍如何学会学习,成为一个会学习的日

团队知识沉淀机制设计与落地方法

本文将从知识沉淀的本质出发,剖析其结构、机制与痛点,提出可操作、可落地的“知识沉淀系统设计方法论”,并结合一线实战经验,指出不同角色在其中的责任与路径,为组织构建真正有生命力的知识体系提供指导。

测试者家园 1834

手把手教你用LDR9201芯片DIY高性能Type-C耳机转接头(附电路图)

本文详细介绍了基于LDR9201芯片DIY高性能Type-C耳机转接头的完整实战教程。从芯片选型、电路设计、元器件采购到焊接调试,手把手指导如何打造一个免驱兼容、支持高解析度音频且可通过EEPROM深度定制功能的专属转接头。重点解析了LDR9201作为高度集成的USB音频控制器SoC的优势,并提供了核心电路图与配置指南,适合电子爱好者和硬件开发者实践。

jump7的博客 355

Ansys Zemax与Speos协同设计:HUD系统从光学优化到驾驶模拟的全流程解析

本文详细解析了如何利用Ansys Zemax与Speos这对“黄金搭档”进行HUD系统的协同设计。流程始于Zemax进行核心光学架构与像差优化,奠定性能基础;随后将设计无缝导入Speos,通过HUD光学分析模块进行量化验证;最终在虚拟驾驶环境中进行沉浸式模拟,评估实际视觉体验与系统集成效果,实现从光学优化到驾驶模拟的全流程闭环。

weixin_29201933的博客 272

技术分享与知识沉淀体系如何建立

undefined

F36_9_的博客 725

Android开发中StateFlow与LiveData的5个关键区别及实战避坑指南

本文深度解析了Android开发中StateFlow与LiveData的5个核心区别,包括设计哲学、生命周期管理、值更新策略、线程模型及协程生态整合。通过实战代码对比,为开发者在现代MVVM架构下的状态管理选型提供清晰的决策指南和避坑建议,帮助构建更健壮、可测试的应用。

weixin_29012677的博客 402

如何学会学习

如何学会学习                                                                --本文转自“http://blog.zzedu.net.cn/user1/kuailekunpeng/archives/2007/57031.html”美国著名未来学家阿尔温·托夫勒曾经指出:"未来的文盲不再是不识字的人,而是没有学会怎样学习的人

杨勇的专栏 4293

论文理解【LLM-OR】——【OptMATH】A Scalable Bidirectional Data Synthesis Framework for Optimization Modeling

本文提出 LLM-OR 领域的双向数据合成框架 OptMATH,从已有 MF/PD 出发反向生成 NL,再使用 AutoFormulator 进行正向建模,通过最优值匹配 rejection sampling 确保语义一致性。实现了难度可控的语义一致数据合成

佚失的诗篇 497

ECN实战指南:如何用SAP系统搞定工程变更(附库存处理避坑技巧)

本文详细解析了如何在SAP系统中高效执行工程变更通知(ECN),特别聚焦PP模块的操作流程与库存处理技巧。通过实战案例和系统操作指南,帮助制造业企业避免库存混乱和生产中断,实现从创建到生效的全流程管理。

m5n6o7的博客 1079

学会 学习

当你开始做某件新事物时,最重要的是知道应该学什么。 学会学习是一种极高杠杆的能力。

阿然的专栏 552

使用Spring Cloud实现银行核心系统的案例示例

以下是一个基于Spring Cloud的银行核心业务系统实现方案,涵盖架构设计、关键模块实现与生产级部署方案。该系统设计满足金融级高可用、强一致性和监管合规要求。

银行信息系统应用架构详解 1172

浅谈元认知理论与学会学习

摘自:http://blog.sina.com.cn/s/blog_50f98dfa0100a86r.html 浅谈元认知理论与学会学习 博主编辑 最重要的教学是教会学生学会学习,最重要的学习是学会学习。近年来,我国不少大、中、小学开展了学习方法的教学,对学生进行学法指导,取得了一定的效果,同时也存在不少问题:侧重从教师的角度谈学生的学习而不是从学生的角度谈学习;在学习方法的教学中忽略了...

buliedian 1223

手把手教你学Simulink——整流器场景:基于PWM控制的单相全桥整流器设计

摘要:本文详细介绍了使用Simulink搭建基于PWM控制的单相全桥整流器的完整设计流程。主要内容包括:系统结构设计(含交流电源、全桥整流器、滤波电路等模块)、分步骤建模过程(从创建项目到添加各功能模块)、双闭环控制系统设计(电压外环和电流内环PI控制)、参数设置建议及仿真分析。通过仿真验证,该整流器可实现单位功率因数运行和稳定输出电压,并提供了数字锁相环等优化方向。文章为电力电子系统设计提供了实用的Simulink建模指导。(149字)

MHD0815的博客 324

FPGA设计-Vivado的Off-Chip Termination设置问题

经常遇到在FPGA设计时,很多人很迷惑这些关于硬件的终端匹配怎么设置,Vivado的Off-Chip Termination设置问题,这里就详细说一下这个问题。

whm128的博客 2725

coursera课程《学会如何学习》知识大纲分享

最近一段时间,学完了一个被很多人推荐的coursera课程:《学会如何学习》,并将自己的总结与思考做成了知识大纲。在此与大家分享:https://mubu.com/doc/hxNxBpBe_C 如果你觉得幕布这个知识大纲整理工具很好用,欢迎使用我的邀请链接来注册:https://mubu.com/inv/2060390 。你和我都会获得3...

weixin_33714884的博客 386

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

学会学习 读书笔记

从小学到大学之前,一直都是学习课本知识,并没有多少自主学习的意识,到了大学和研究生之后,虽然自己也有主动去学习,但是一直觉得收获并不是那么大,没有明确的目标,多多少少也看过一些书,但是仅仅局限于看过,在自己的脑海里并没有留下太多的知识。常常会觉得恐惧,自己并没有成为自己期待中的自己。因此尝试着去阅读一些如何学习的书,断断续续花了一天的时间的,阅读了一书。 整本书读下来,总体感觉收获不大,因为并没

wendy_fly的专栏 1563

深度学习工具包 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")

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

一周学会 SolidWorks 学习计划

一周学会 SolidWorks 学习计划

realzhangpeng的博客 940

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

学会如何学习

相反地,人们更愿意相信:人类似乎可以自行确定应该对环境中的哪种刺激做出反应,哪些是应该忽略的,哪些信息是值得学习的,哪些信息又是可以置若罔闻的。然而,尽管他们都没有能够算出正确的答案,但是这两名学生所暴露出来的问题却是截然不同的。. 但是恰恰相反,我们在实际中常常见到的情况却是,正规的教育只知道一味地反复灌输--这种教育所起的作用,只会让程序员对自己所学的工具感到厌烦。> 无论是在正式的课堂环境还是工作环境中,对新事物的畏惧、对失败的担忧以及不情愿承认自己的弱点,都会成为学习的直接障碍。

liu_hai_shi的专栏 481

书法学习要学会什么?

书法学习要学会什么?听起来这是一个“简单”的问题,不就是要学如何写字吗?对啊!没错!其实要怎么学?学什么?这里边也有学问。我认为在学会用笔和掌握基本的学习方法之后,首先要学会练功,其次还要学会观察、学会欣赏、学会感悟。   一.学会练功   书法学习要学会练功。这如同走路一样,学会了走路,才能达到心中的目标,想到那儿就能到那儿。在书法学习上,也要学会练功,这对书法技术的提高和表现力的增强,起着

设计之家 700

学会休息 学会工作 学会学习

学会休息 学会工作 学会学习 在自己已十年的职场生涯里,又添加了一项新的经历。深深体会了“塞翁失马焉知非福”的道理。也感受了一次“什么叫做惊喜”的体验。 从10月7日一直忙到20日,十几天飞8次 + 灌输式的培训 + 项目中间接手。 今天终于好好的睡了一天,精神恢复,明天继续“战斗”!! 学会休息 -- 保持精力的前提 学会工作 -- 张弛有度 学会学习 ...

weixin_33887443的博客 133
上一篇: Vue.js组件开发从1到100
下一篇: 简单A/BTest验证图片懒加载效果
Sheldon_Law
博客等级 码龄11年 44粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值