3句话告诉你学习的方法论

Wesley13
• 阅读 600

3句话告诉你学习的方法论

文章

摘要

3句话告诉你学习的方法论

本文统筹人类学习和机器学习的特点,提出了学习的一般化定义:学习是指一个目的系统从数据中提取模型,并用模型进行决策的过程。

基于这一学习定义,提出了提升学习效率的3条关键方法论,并对其具体使用进行了详细说明。

1,用自我提问强化元认知。

2,用内容输出优化认知结构。

3,用科学推理探究非结构问题。

当我们谈论学习时,我们究竟谈论的是什么呢?

3句话告诉你学习的方法论

教育心理学中认为,狭义的学习指的是:通过阅读、听讲、思考、研究、实践等途径获得知识或技能的过程。

而广义的学习指的是:人和动物在生活过程中通过经验而产生的行为或行为潜能相对持久的变化。

然而,上述定义没有深入概括“学习”行为的本质。至少它们不能解释当下火热的“机器学习”现象:计算机程序可以学习驾驶汽车,识别语音图像,下围棋打游戏……

为了更具有一般性,我对学习这一概念定义如下:学习是指一个目的系统从数据中提取模型,并用模型进行决策的过程。

这个定义中有几个关键词。第一个是目的系统,第二个是数据,第三个是模型,第四个是决策。

例如以小明学习投篮为例。小明即一个目的系统,其目的是提高投篮命中率。数据即无数次投篮练习中各种各样的投篮方式与其对应的投篮结果,对于人类的学习一般可以称之为经验。模型即小明习得的投篮技能,不同投篮位置对应的最适宜投掷力度和方向等。决策即小明根据习得的投篮技能进行下一次投篮方式的选择。

又例如以AlphaGo学习下围棋为例。AlphaGo即一个目的系统,其目的是提高棋局胜率。数据即AlphaGo无数次左右互搏中各种落子方式与其对应的棋局结果。模型即AlphaGo背后的判断棋局形势和决定落子位置的机器学习算法。决策即AlphaGo依据训练后的模型进行下一次落子位置的选择。

“一个目的系统从数据中提取模型,并用模型进行决策的过程”作为学习的概念定义,我们可以比较自然地引出如下3条学习的核心方法论。

1,用自我提问强化元认知。

2,用内容输出优化认知结构。

3,用科学推理探究非结构问题。

一,用自我提问强化元认知

学习的定义中的第一个关键词是目的系统。如果一个系统具有负反馈机制,那么这个系统就是一个目的系统。所谓负反馈机制,就是不断地将当前状态与理想状态进行对比,并调整当前状态以缩小二者差异的机制。

而元认知,正是在学习过程中扮演了负反馈机制的作用。所谓元认知,就是对自身认知的认知。"元认知"是美国心理学家弗拉维尔在20世纪70年代提出来的。元认知属于一种反思性的智慧。

3句话告诉你学习的方法论

元认知通常以自我提问的技术形式发挥作用。以下是为举例。

首先是确定学习目标,例如入门Python。可以问自己,我学习Python对我的职业规划有什么帮助呢?学习Python后主要想用它干什么呢?我目前的基础是否能够学会呢?

然后拟定学习计划。可以问自己,可以去哪里找到好的Python入门学习资源呢?我应该优先学习哪个呢?我计划花费多久的时间去学习它呢?

3句话告诉你学习的方法论

接着实施学习计划。在学习过程中,可以问自己,当前学习的这部分内容是否掌握了呢?如果没有掌握,具体哪个概念或者代码范例没有搞懂?可不可以通过百度搜索或者请教老师同学把它搞懂?

最后进行学习评价。拟定的学习目标Python入门是否达成?是否做了学习笔记或学习资料整理等留痕工作?如果遗忘了是否能重新通过学习留痕快速拾起?

3句话告诉你学习的方法论

二,用内容输出优化认知结构

学习的定义中的第二个,第三个,和第四个关键词分别是数据,模型和决策。数据是输入,决策是输出,模型是输入和输出之间的转换路径。对于人类的学习,决定输入到输出之间转换路径的是人的认知结构。认知结构的优劣,决定了输入到输出的转换是否合理高效。

美国著名的心理学家布鲁纳提出了认知结构学习理论。学习的实质是主动地形成认知结构。认知结构是指由过去对外界事物进行感知、概括或经验构成的观念结构。学习者是通过把新获得的知识和已有的认知结构联系起来构建其知识体系的。

良好的认知结构通常有两大特点:一是具有结构清晰的概念体系,二是具有丰富多元可供模仿的代表范例。

概念体系相对抽象,能够确保习得的模型具有一定的泛化能力,防止过拟合。而代表范例非常具体,能够确保习得的模型充分保留一些细节信息,防止欠拟合。

结构清晰的概念体系是一棵"决策树"模型。根据算法理论,树模型的搜索效率是很高的,时间复杂度近似为O(log(n)),n为树模型子节点的个数。而结构混乱的概念体系仿佛是一片"决策云",不同的概念子节点之间没有建立联系,根据"决策云"来决策,其搜索效率很低,只能尝试遍历全部子节点,时间复杂度近似为O(n)。

为了建立良好的认知结构,有一种特别有效的方法,叫做以教为学,这其实是一种用输出倒逼输入的学习方法。费曼非常推崇这种学习方法,因此也称之为费曼学习法,具体做法如下:  1,先学习某个知识 2,想象自己在向别人教授某个知识 3,教授的不顺畅、卡住的地方,就停下来,查阅相关资料解决问题 4, 再次重复2-3,直至完全讲清楚。

3句话告诉你学习的方法论

当然,不可能我们每个人为了学习Python都去编写一部十万字的Python教程,或者找来一个Python小白做自己的徒弟直到把他教会。你不必走的那么远,但是你绝对应该朝着这个方向去努力:

1,你可以用一张思维导图整理出Python里面基础的概念体系。一张图要概括最核心的全部内容,并且要层次清晰,让人能很快背下来。

就像这样:

3句话告诉你学习的方法论

2,你可以整理出一份自己的简短Python教程。确保里面的每一个范例你都写过代码并且是完全理解的。

就像这样:

3小时Python入门

三,用科学推理探究非结构化问题

学习的定义中第三个和第四个关键词分别是模型和决策。对于机器学习模型,其决策通常只针对特定的一系列相似的问题。而人类认知结构模型,则常常面对一些迥然不同的陌生问题。这些看起来不能够直接应用现有认知结构立即进行决策的问题构成了教学心理学范畴中真正的问题。

在教育心理学中,问题被定义为给定信息和要达到的目标之间存在着某些障碍需要被克服的刺激情境。问题解决是指应用一系列的认知操作,从问题的起始状态到达目标状态的过程。问题解决是高级形式的学习活动,它是检验认知结构的试金石,是强化认知结构的雕刻刀,同时还是促进元认知能力提高的催化剂。

从某种程度上说,人类学习的的终极目的就是为了解决问题。解决问题的能力依赖于认知结构和元认知水平。同时解决问题的训练促进认知结构的完善和元认知水平的提高。元认知、认知结构和问题解决形成了一个交互影响的方法论三角。

3句话告诉你学习的方法论

在问题解决的过程中,元认知的参与是非常重要的。尝试自问自答以下一些问题非常有帮助:这个问题具体有哪些困难点?有什么还没有尝试的方法可以克服某个困难点?是否可以把这个问题转化成熟悉的问题?是否还有相关的资源可以用来帮助克服困难?这个困难可能的解决途径是怎么样的?为了解决这个困难我现有的认知结构是否完备?

人类的文明史,从火的发明到宇宙飞船上天,都是一部问题解决史。每个人在生活中也会遇到各种问题,例如普通的电脑宕机问题、复杂的代码bug问题、银行卡余额不足问题,以及晚上被自己帅得睡不着等问题。所有的这些问题,都可以归类为有结构的问题和结构不良的问题。

3句话告诉你学习的方法论

有结构的问题指的是给定的条件和要达到的目标都非常的清晰,与解决问题相关的知识经验都非常的明确的问题。或者说,对有结构的问题,解决问题可能用到的操作符是一个有限集。例如,普通的电脑宕机问题就属于有结构的问题。可用到的操作符包括重启,按F8进入安全模式还原系统设定,重装系统,以及更换硬件。有结构的问题的解决通常是相对容易的,只要参照过往解决类似问题的经验,在可能用到的操作符集合中选定合适的操作符组合成序列并依次作用通常就能够解决问题。

而结构不良的问题往往具有给定的条件和要达到的目标都比较模糊,问题情境不明确,相关的影响因素不稳定,问题本身具有一定的特殊性,一般性知识和过去的经验不一定适用,可能用到的操作符是一个无穷集合等特点。一些复杂的代码bug问题、银行卡余额不足问题、以及晚上被自己帅的睡不着等生活中遇到的大部分问题都属于结构不良的问题。

对于结构不良的问题,一般要分3步走去解决问题。第1步是什么,第2步为什么,第3步怎么办。是什么即理解问题情境,明确当前给定状态和理想目标状态,通过对相关要素的梳理尽可能将问题朝着结构化的方向去转换,用简单的语言把问题关键点说清楚,并尝试通过一些可视化的方法呈现问题。为什么即诊断问题原因,通过猜想验证的方式找到产生当前状态的主要原因。怎么办即寻找解决路径,在理解问题情境和诊断问题原因的基础上,尝试找到可能的切入点并规划解决路径。

3句话告诉你学习的方法论

在尝试解决非结构问题的过程中,结构化技术与可视化技术会极大地帮助我们简化问题的表现形式,给予我们诸多启发。但对于真正困难的问题,起主导作用的往往是一种叫做科学推理的思维技术。

有些问题是如此的困难,以至于我们无法顺畅地诊断问题原因和设计出可行的解决路径。那么我们还可以做什么呢?我们还可以做的就是猜想,就是假设。并进一步根据这个假设去演绎推论,通过验证推论来证伪这个假设,或者增加这个假设的可信度。

3句话告诉你学习的方法论

这种从假设出发切入复杂问题的技术拥有如此巨大的威力,以至于随处可见其身影。科学家通过理论猜想与实验检验来发现自然规律,数学家通过反证法来证明数学命题,统计学家通过假设检验来判别统计观点,侦探专家通过怀疑与举证来寻找案件凶手,而程序员们则通过截取可疑代码单独运行来排查bug......

3句话告诉你学习的方法论

3句话告诉你学习的方法论

3句话告诉你学习的方法论

Python与算法之美
(Python_Ai_Road)

3句话告诉你学习的方法论

本文分享自微信公众号 - Python与算法之美(Python_Ai_Road)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
3年前
Eclipse插件开发_学习_00_资源帖
一、官方资料 1.eclipseapi(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fhelp.eclipse.org%2Fmars%2Findex.jsp%3Ftopic%3D%252Forg.eclipse.platform.doc.isv%252Fguide%2
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
11个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这