机器学习课程教学案例—手写数字识别系统开发

摘要:面对机器学习复杂的技术性课程,细化教学目标、贯穿案例驱动的教学方法、强化实践教学应该是最有效的教学方法。一个具体例子能使学生有效掌握精粹、消除疑惑、理解抽象概念。本文通过一个典型且简单的例子讲解这门课程讲述的核心主线。希望能起到理论联系实际、举一反三、逐步深入、提高学生的学习信心的作用。
关键词:机器学习;手写数字识别;案例教学

1.前言

人工智能、机器人、大数据等已经离不开我们的生活。教育部发文,机器人与编程被列入2018高中必修课。机器人素质教育进入校园,其核心概念是机器学习。机器学习在诸多领域成功的应用与发展,己成为信息处理领域的基础和热点[1][2]。机器学习的相关的课程从研究生教育逐渐进入高中教育阶段。作为一门实践性极强的课程,其内容自然联系到诸多抽象概念和基础课程。虽然,机器学习相关的教学课程及网上课堂很多[3],内容也丰富多样,但缺乏简单易懂的案例教学。将复杂的内容有效教授给学生、以及让学生掌握其精粹、理解其内涵是件艰巨的任务。通过案例场景引出相关概念、技术,以此为主线增强学生的学习信心可能是机器学习课程最有效的教学方法。一个具体案例能有效掌握主题、消除疑惑、理解抽象概念等方面取到举一反三的目标[4]。
从多年的教学工作当中发现,大部分教材及参考书,注重抽象概念及普遍理论的讲解。对于具体简单的例子的讲解案例严重缺乏。导致学习过程只是现成工具的套用,最终对抽象概念一知半解,越学越觉得吃力、脱离实践、死记硬背。学习效率差,直接导致厌学。甚至有的学生直接提出“既然有很好的现成工具就不需要学习,直接应用即可”。
机器学习方法之多,如HMM、GMM、K-means、SVM、DNN 等等,内容之抽象,很容易导致理论脱离实践。本文采用比较直观的例子“手写数字的识别”作为例子讲解一个以线性分类器为核心的机器学习方法。多维线性函数是SVM、DNN 等效果比较好的机器学方法的基础,直观并易于理解、容易实现。对于初学者是个理想的实践过程。

2. 模型的建立

机器学习的目标可以是各种信息,包括视觉信号及听觉信号等。比较典型的是语音及 文字信息。其中文字图像比较直观,用于机器学习教学效果更好。但是手写数字包含随机变化成分,因为我们知道每个人书写方式、习惯、大小、角度等不会完全一样,相同的数字一个人写两次也不会完全一样。但是每个文字或数字都有固定的模版。我们可以用模版的匹配度量来区分不同数字或进行分类。因此,即需要很好的机器学习模型,有需要大量样本的训练过程。
可以用较复杂的概率统计概念来设计一个模型[3],也可以用简单的线性函数来实现分类过程。机器学习模型需要在训练样本中训练。类似于,一个小孩开始学习认知数字。先让孩子学习各个数字,然后让其辨认一些数字。刚开始,孩子虽然能正确辨认出比较规整的手写数字,也会误判一些写的较潦草的数字。慢慢通过学习(学习各种手写样本)就能不断提高准确率。
机器学习过程需要模型和样本两部分,首先设计一个数学模型,其次在大量样本上学习后调整模型的参数,并用该模型去判断新的手写数字。公式(1)一个线性模型,是另外两个重要机器学习模型的基础,深度神经网络(DNN),和支持向量机(SVM) 。

虽然该例子很简单,但是任何复杂的机器学习模型都是通过对公式(1)~(3)的改变或优化获得的,机器学习的核心思路没变。若将公式(2)换成公式(4),模型就变成了标准的感知器(perceptron)模型。图1 显示的是一个数据(如:数据“3”)的预测模型,10个这样的模型并联成起来就成了识别10个数据的单层原始神经网络模型。
sigmoid(f(X))=1/(1+e^(-f(x)) ) (4)

3. 试验数据准备

 图像在计算机中的简单(单色)表示方法是矩阵形式,如图2。这些信号输入机器学习模型时,需要转换成一系列特征向量。特征向量可能是一维的,也可能是二维的。相应的特征数据有有统计特征、钜、方向特征等等,也可能是图像矩阵本身。数据准备过程需要图像的采集、二值化、规范化、细化等过程。最终获得大小规整的数字矩阵。图2显示一个数字矩阵,白色用0表示,黑色用1表示,就能获得2维矩阵。

大家可以自己找几个人进行手写数字的采样和预处理过程。 也可以直接用免费数据MNIST[5],MNIST提供了6万个训练样本,和1万个测试样本,每个样本是一个28*28矩阵。收集样本时要注意,训练样本和测试样本是不同人提供的。

4. 实现过程

模型实现方法比较简单,大家可以用任何编程语言,如:python,C,MATLAB 等,实现。如下我们提供的伪代码。其中 X 是所有训练数据,每行是一个样本,总行数M是总样本数,列数是一维特征向量,长度为N,注意x_0=1,即将矩阵X的第一列全设置成 1,对应的参数 w_0 成为偏移量。 实际信号的特征值长度是N-1。

我门取了20个人的200个样本数据进行训练,并在少量测试数据上进行测试,错误率为22%。这只是一个数字的识别过程,要实现10个手写数字的识别模型,简单的并联即可。

5. 总结

机器学习作为一门实践性极强的课程,其内容自然和诸多抽象概念和基础课程有关。将这些内容有效教授给学生、以及让学生掌握其精粹、理解其 内涵是件艰巨的任务。本文以教学为目的介绍了一个简单且典型的机器学习模型机器设计和训练过程。虽然关于机器学习的书籍及参考资料很多,对于初学者的简单案例教学形式的材料严重缺乏。因此,尽量用通俗易懂的方式讲解了机器学习完整过程,避免了概念的抽象化,注重具体细节和实现过程。难免有不足之处,希望大家批评指正。

参考文献:

[1] 余明华; 冯翔; 祝智庭. 人工智能视域下机器学习的教育应用与创新探索. 远程教育杂志. 2017-05-20
[2] 邓志鸿; 谢昆青. 机器学习课程的教学实践——以北京大学“智能科学与技术”本科专业为例. 计算机教育. 2016-10-10
[3] Christopher Bishop.“Pattern Recognition and Machine Learning”. Springer press, 2007
[4] 李勇. 本科机器学习课程教改实践与探索. 计算机教育. 2015-07-10
[5] http://yann.lecun.com/exdb/mnist/

Machine Learning Teaching Case – Handwritten Digit Recognition

Abstract: Machine learning is a complicated subject. The most effective teaching ways for this course must be refinement of teaching methods, using case teaching methods, and emphasize practice. A concrete example help students grasp the pith, clear ambiguity, and understand abstract concepts. This paper explain the essential process of machine learning via a simple and typical example. Hope this will build a bridge between theory and practice, and be an inference for further study, and improve student’s confidence.

机器学习课程教学案例—简单手写数字识别系统开发相关推荐

  1. 课程设计(毕业设计)—基于机器学习KNN算法手写数字识别系统—计算机专业课程设计(毕业设计)

    机器学习KNN算法手写数字识别系统 下载本文手写数字识别系统完整的代码和课设报告的链接(或者可以联系博主koukou(壹壹23七2五六98),获取源码和报告):https://download.csd ...

  2. 机器学习入门-kNN算法实现手写数字识别

    实验环境 Python:3.7.0 Anconda:3-5.3.1 64位 操作系统:win10 开发工具:sublime text(非必要) 简介 本次实验中的重点为采用kNN算法进行手写数字识别, ...

  3. 【机器学习/人工智能】 大作业:手写数字识别系统

    写在前面 参考的是https://zh.d2l.ai/index.html 一.大作业设计目的与要求 (1)利用所学习的聚类算法完成简单的图像分割系统. (2)编程并利用相关软件完成大作业测试,得到实 ...

  4. 【毕业设计_课程设计】手写数字识别系统的设计实现(源码+论文)

    文章目录 0 项目说明 1 系统概述 1.1 系统实现环境 2 研究方法 2.1 图像预处理阶段 2.2 特征提取阶段 2.3 数字识别阶段 3 研究结论 4 论文概览 5 项目工程 0 项目说明 手 ...

  5. k-近邻算法实现手写数字识别系统

    k-近邻算法实现手写数字识别系统 一.实验介绍 1.1 实验内容 本实验将会从电影题材分类的例子入手,详细讲述k-近邻算法的原理.在这之后,我们将会使用该算法实现手写数字识别系统. 1.2 课程来源 ...

  6. Python(TensorFlow框架)实现手写数字识别系统

    手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...

  7. Python TensorFlow框架 实现手写数字识别系统

    手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...

  8. 手写数字识别系统学习(1)

    手写数字识别系统学习(1) 从这一章起,我们将通过手写数字识别这一非常经典的机器学习项目接着来学习神经网络 一.数据数据和测试数据 ​ 我们在上一章提到了权重和偏置的概念,这是一个相当繁琐的数据集,我 ...

  9. 【手写数字识别】基于matlab GUI BP神经网络单个或连续手写数字识别系统【含Matlab源码 2296期】

    ⛄一.手写数字识别技术简介 1 案例背景 手写体数字识别是图像识别学科下的一个分支,是图像处理和模式识别研究领域的重要应用之一,并且具有很强的通用性.由于手写体数字的随意性很大,如笔画粗细.字体大小. ...

  10. 使用K-邻近算法实现手写数字识别系统

    k-近邻法简介 k近邻法(k-nearest neighbor, k-NN)是1967年由Cover T和Hart P提出的一种基本分类与回归方法.它的工作原理是:存在一个样本数据集合,也称作为训练样 ...

最新文章

  1. Transformer霸榜全景分割任务,南大、港大提出一种通用框架!
  2. Introduction for i-Teams
  3. SQL Server2000 未公开的存储过程
  4. javascript arraybuffer
  5. IDEA debug提示Connected to the target VM, address: ‘127.0.0.1:xxxxx‘, transport: ‘socket‘的原因
  6. VmPlayer上设置主机和windows虚拟机文件夹共享
  7. 同步时钟配置电脑自动校时
  8. 软考中级软件设计师——数据库系统
  9. 不动产租赁运营平台,为不动产租赁提供强劲的运营支持
  10. 运维工程师故障排查思路(备忘)
  11. 计算机组成原理——指令系统
  12. 2021-03-27
  13. 通过股票数据接口如何看懂Level-2行情?
  14. 如何将 EXCEL 数据写入数据库
  15. 485集线器在总线型数据采集系统的应用
  16. (热更新相关)CocoaChina 2013春季开发者大会:《大掌门》欧阳刘彬--基于Cocos2d-x引擎开发经验分享
  17. b站黑马Vue2后台管理项目笔记——(1)登录功能
  18. 威学一百_威学一百app下载-威学一百官网版下载v1.0.0_MDPDA手机网
  19. (四)C语言零基础入门 --- C语言之入门课程
  20. 【大学毕设全纪录】鸟类的声音识别·一

热门文章

  1. 我的世界空岛服务器修改地形,我的世界攻略秘籍 [WorldPainter制作空岛]—我有特别的地形技巧...
  2. 如何使用阿里云搭建个人网站 1
  3. 系统封装失败遇到windows 无法分析或处理
  4. 六款Win7系统可用的免费内存释放工具,让电脑跑的更high
  5. idea破解到2100年
  6. 成考专升本高等数学公式笔记
  7. 2021安徽安全员C证考试多选练习题库
  8. Forth 语言学习
  9. 制作精美失落美女胶片效果
  10. uniapp 小程序扫描二维码