Giter VIP home page Giter VIP logo

ai-edu's Introduction

微软人工智能教育与学习共建社区

微软人工智能教育与学习共建社区(Microsoft AI Education Community, 简称AI-Edu)是微软亚洲研究院(Microsoft Research Asia,简称MSRA)人工智能教育团队创立的人工智能开源社区。

本社区由基础教程实践案例实践项目三大模块构成,通过系统化的理论教程和丰富多样的实践案例,帮助学习者学习并掌握人工智能的知识,并锻炼在实际项目中的开发能力。

最新消息!

  • 2021年8月16日

    A6-人工智能系统 更新A6-人工智能系统 课程已更新到最新版本!

    从即日起,人工智能系统开源课程做为本社区的子模块,与原始仓库保持同步更新。欢迎前来社区学习!

  • 2021年6月25日

    新版本发布:AI-Edu V1.3.0 已经发布啦!全新的社区架构,更加简洁方便!与之配套的网站也同步上线啦,欢迎大家前来体验!点此访问网站

  • 2021年6月21日

    案例更新:新的实践案例 基于LightGBM的时间序列预测 已上线,欢迎感兴趣的小伙伴前往学习。

  • 更新历史

目录功能一览

基础教程 实践案例 实践项目
内容

发布和贡献

AI-Edu目前由微软亚洲研究院的研发团队与学术合作部提供支持与更新,我们会在Issues中发布当月的更新计划。

您在使用过程中发现任何问题,可以在Issues Channel创建New issue来告诉我们。如果您计划修复已有或新发现的BUG,欢迎您随时随地提交Pull Request。

如果您计划提供新的内容或加入到我们的内容更新团队中,请先创建一个新的Issue告诉我们或在已有Issue的基础上与我们讨论,如有需要,我们也会安排电话会议方便我们更进一步的交流。

如果需要了解更多关于贡献的信息,请参考共建指南

反馈

  • 在Github Issue中提交问题
  • 与我们邮件沟通

使命

在教育部指导下,依托于新一代人工智能开放科研教育平台,微软亚洲研究院研发团队和学术合作部将为本社区提供全面支持。我们将在此提供人工智能应用开发的真实案例,以及配套的教程、工具等学习资源,人工智能领域的一线教师及学习者也将分享他们的资源与经验。

正如微软的使命“予力全球每一人、每一组织,成就不凡”所指出的,期待借由本社区的建立,能以开源的方式,与广大师生、开发者一起学习、贡献,共同丰富、完善本社区,既而为**人工智能的发展添砖加瓦。

许可协议

LICENSE

ai-edu's People

Contributors

annbless avatar bartuer avatar celianiu avatar chelxom avatar double680 avatar fancy-mit-cse avatar harry2845 avatar hydraxman avatar imsuven avatar kadoufall avatar knightlancelot avatar kvartet avatar lillzhen avatar littlelittleyang avatar marko-polo-cheno avatar microsoftopensource avatar moqu79 avatar mslichao avatar peterchenhao avatar ppdog0 avatar sherrylone avatar sxjeru avatar tobeyqin avatar trucksoul avatar v-zich avatar xiaowuhu avatar xinase avatar xja avatar yanjiegao avatar zzzkey23 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ai-edu's Issues

B-教学案例与实践/B6-神经网络基本原理简明教程

分类问题的损失函数

第03.2节,3.2.4,为什么不能用均方差做为分类问题的损失函数,其中提到了损失函数的凸函数问题。能否以图形化的形式展示,当使用均方差做为分类问题的损失函数时,其函数图像是什么样子?

梯度检查

第12.3节,讲解了梯度检查,并应用在第12章的代码上。能否使用相同的梯度检查方法,应用在第14章的代码上?以验证MiniFramework的正确性。

broken links

global culture

There's a version of this repo in another languages ? English or even PT-BR ? Thanks

学习率衰减算法

第12.4节,用python绘制各种学习率衰减算法的示意图。进一步,实现各种衰减算法,应用在MNIST上进行比较。

Golden Number challenge for summer camp 2019

游戏背景:

什么是黄金点游戏?请在邹欣老师的博客查看介绍:创新的时机 – 黄金点游戏

基本规则:

N个玩家,每人写一个0~100之间的有理数 (不包括0或100),提交给服务器,服务器在当前回合结束时算出所有数字的平均值,然后乘以0.618(所谓黄金分割常数),得到G值。 提交的数字最靠近G(取绝对值)的玩家得到N分,离G最远的玩家得到-2分,其他玩家得0分。 只有一个玩家参与时不得分。

试玩:黄金点游戏网页

扩展规则

为了提高比赛性,每个玩家每回合可以提交两个数,这样玩家可以用两个数双保险去接近G值,也可以提交一个较大的数字来保证自己的另一个数字比较接近G值。

  • 玩家的两个数都参与计算G值
  • 如果多个玩家同时猜到最近的数,都得N分,其中N为实际参与到当前回合的玩家数,同时猜到最远的数,都扣2分
  • 同一玩家在同一回合的两个数相同并且最近或最远时,只计一次分
  • 同一玩家的两个数一个最近,另一个最远时,得N-2分

常规挑战:

房间0房间1是常规比赛房间,其中内置了多个基于规则的Bot,单人玩时可以选择这两个房间。

夏令营比赛说明:

每个队伍必须编写Bot来参加比赛,比赛规则使用上面的扩展规则。

比赛分上下半场,每个半场各进行500回合,每回合限定5秒钟,包括网络传输的延迟等。如果当前回合没有及时提交数字,或者提交的数字格式非法,则当前回合得分为0分。

正式比赛前会进行预热,保证每组都可以正常参与比赛。

游戏房间内限定参与人数,只要在房间内提交过数字,就认为已加入到房间中,即使后续不再提交数字,也认为该玩家始终在房间中,占用一个玩家名额,所以大家比赛中途不要更换用户。

如果5秒内所有人都提交,立即结束当前回合,计算结果并提前开始下一回合。

如果模型训练需要较长时间,可以考虑赛前使用其它房间(75/76/1221/)的历史数据训练一个模型,但要注意,每次比赛的Bot不一样,不一定具有参考价值。如果需要实时训练并且时长超过5秒的,可以考虑使用多线程或多进程,一个用于训练,一个用于预测并提交结果。

比赛过程中,技术上没有阻止大家针对当前的比赛状况由人来实时调整修改Bot的策略,但是我们更希望看到Bot能像人一样智能的进行自我调整。

接口文档

示例代码

代码提供了一个与服务器交互的基本框架,如无特殊需求,可以直接修改GeneratePredictionNumbers函数来实现各自的策略。

使用示例代码时,请修改其中的用户名部分,使用自己的队伍名字代替。用户信息记录在userinfo.txt文件中,删除该文件再运行可以重新创建用户。

比赛结束后,请各组队伍介绍下自己的策略。

提高回归任务的准确度

第14.2节,使用真实数据验证MiniFramework在回归任务上的表现,功能没有问题,但结果的准确度为86%,不太高。能否提高此准确度?

权重初始化

第15.1节,用实际案例来比较4种权重矩阵初始化的训练结果。

python的多进程

第09.6节,代码中使用单进程方式一个个计算参数组合,比较慢。请提供一个python的多进程并发代码来实现。

随机搜索

第9.6.4节,实现随机搜索算法,并应用于该章的复杂(蛇形)曲线拟合种。

最小二乘法配图

$
|y_i-\omega x_i-b|
$是$y_i$与$\omega x_i+b$之间的竖直距离,不是垂直直线的距离,配图有问题。
这两者之间差一个与直线斜率有关的常数

homework

在人工智能发展史上,有繁荣也有低谷。并且值得注意的是,虽然发展往往带来许多负面影响,但人工智能的发展大体呈现出上升趋势,并且正在走向突破阶段。谈起人工智能,会不自觉的觉得这个名词十分的高大尚,一般人或许很难明白其内部机理。其实,人工智能的根基就在于把所有的计算、数据、云端和物联网终端的设备联系起来,搭建一个能支持智能决定的系统。这个系统对人类的活动是有益处的,譬如像智能电子设备,能够在一定程度上满足人们的精神需求。所以说人工智能并不难以想象,它就在我们身边。
还记得围棋冠军被机器人打败的例子,人工智能是如何做到复杂情况判断的呢?当机器跟人对弈围棋的时候,我们表面上看机器人是在思考如何走,其实它并不知道自己是在下棋,而是处理一些复杂的矩阵运算,达到落下一步棋的目的。至于我们还谈到的机器人可以自己跟自己对弈,提升自己的能力,也不过是进行数据的处理而已。因此,机器人通过这些不断的计算,由于处理能力之快,它所表现出来的一些行为,看起来是经过“深思熟虑”的,那么我们也就会说此时机器人它本身具有了一定的“智慧”,这些“智慧”建立在拥有复杂的运算背景下。
机器人不仅能够下围棋,甚至也能够像一个诗人一样做诗。这个是真的吗?的确如此,机器人确实会作诗,然而并不能触景生情。与其说它能够吟诗作赋倒不如讲它是单纯的把一些景物进行识别,根据其内部存储的数据,通过景物得出一些匹配词组,然后进行单纯意义上的组合而已。这样做出的诗是十分平淡无味的。要是一个普通人看到这样的诗句,没准会无法想象出当时的意境出来。因此,在这一方面机器人也是没有感情色彩的,也就是没有“智慧”的,或者说没有像人类一样的智慧。
上面的两个例子回答了关于“中文房间”的问题。也即是:智能并不是一个可计算的问题。何谓“中文房间”?普遍的解释是说让一个身处密闭房间里不懂中文的机器人处理中文问题并回答外部世界中的人给出的中文问题;而且这个机器人其实压根就不懂得中文的语义,也就是对所拿到的问题其实是一无所知的。那如果在这样的情况下,该机器人是否能够像人一样思考,也就引发了一系列争论。在这里我想说的是,即使我们在某些情况下比如下棋和作诗表面上看起来机器人可以进行“思考”,但其实它们仅仅是处理数据而已,并不就有人的意识,也就谈不上是一个完整的人,也就没有人的智慧。
人工智能是如何发展起来的呢?或者说这个发展建立的根基是怎样的呢?有没有别的方面间接影响了人工智能历史的发展?
我们出生在自然中,时刻离不开大自然。处于对自然的好奇,我们人类开始了永无止境的探索。当看到一些奇特的自然现象的时候,不由得会研究它。为了带来数据上的可靠性,开始了不断的体验和总结规律的过程。于是,一些基本的自然现象就被描述和记录了下来,并被后人引用并继续探究。其实在观察类比的过程中,发生了一些有意思的现象。比如,由于穿山甲善于打洞,“象形”的思维方式认为穿山甲有“打通”的效力,因此遇到诸如乳汁不同等情况时,穿山甲就能起作用。不过有的时候,人的眼睛会欺骗自己,所以观察并不总能解决问题,而且有些事物也是没有规律的,但是对于普遍的问题,我们可以进行总结和推广。随着不断的升华提炼,人类逐渐总结出了一系列反应该问题的公式和定理,通常这些定理也是仅仅的描述物体的客观规律而已。比如我国的数学家祖冲之,就提出了圆周率的概念,这是通过观察圆形的物体得出的结论。通过比萨斜塔自由落体运动,伽利略进一步给出真空中羽毛和钢球下落一样快的奥秘。因此,无论在什么情况下,凡事必有因果存在。
那么一个有意思的问题也就出现了,也就是在因果论背景下,三门选择问题成为了焦点。
问题的背景是这样的。有三个门,每个门后面都有奖品。其中有一个门后面的奖品是一辆汽车,而其他的两扇门后面则是一头羊。现在让参赛者随机挑选出一扇门,领走后面的奖
品。虽然参赛者并不清楚门的后面是什么,但是主持人却清楚。当参赛者挑选出其中的一扇门后,主持人就立刻给出另一扇带有羊的门,并且提问参赛者是否立刻换门。这时的参赛者到底该不该换门,来获得最终的汽车这个大奖。对此我的理解如下。首先假设参赛者已经选中了带有汽车的门,也就相当于他已经获得了最终想要得到的大奖。但是他自己此时并不知情,因为在他的印象中,这扇门后面有可能是车、有可能是羊。他此时看到了主持人开了一扇带有羊的门,那么他就会觉得此时他已经开的这扇门后面是车的概率为二分之一,那他就不会选择继续换门,因为换另一扇门其实概率也是一样的。但实际情况并不像他所想的那样,这扇门后面其实已经存在了汽车,这个汽车选择其实是他在之前主持人没开门时选择的,也就是说之前他选中汽车的概率为三分之一。那么,此刻当主持人问是否换门时,若继续换门,势必会离得不到汽车,那么此时得到汽车的概率就变为了零。因此决定他得不得到汽车的概率取决于自己的决定,但本质上他已经得到了汽车,这个概率来源于之前的概率也即是三分之一。但是如果之前这个人并没有选中汽车,而是选中了得到羊这个奖品的门,那么同样的分析,当主持人打开另一扇有羊的门的时候,这个人就立刻明白,此时这扇门为汽车的概率是二分之一。如果他此时换门,客观上来讲是必定得到汽车,但是他本人并不清楚,因此此刻对于他自己来讲,即使换了门,他得到汽车的概率依然为二分之一。因此综上所述,对于参赛者自己来讲,在两种都换门的情况下,他得到汽车的概率显然是不一样的。到底该不该换门,其实各有利弊,也就是说概率并不能真正反映客观的实在性。
我们身处人工智能的时代,利用人工智能产品来解决我们客观遇到的问题是十分有帮助的。那么将来能不能做出一个学生青睐的具有人工智能的“学习助手”出来,帮助学生们更好的解答学习上的问题。这款人工智能的构思大概是这样的:同学们遇到不会的问题,就随时随地请教“学习助手”,它甚至可以集成各个专业领域内其他学习资料,实现随时随地学习知识的数据支持。这个创意的确能解决学生遇到不会的问题。比如各种找资料而无法得到解答的困境,另外随时随地背英语单词或者回忆学过的公式定理,也可以加深学生们对知识的理解,能够帮助他们更好的利用碎片化的时间来温故知新。这个产品的核心之处在于它能够根据用户实际的需要来满足用户,其中包含了许多自学习算法和大量的数据存储;另外还具有一定的可识别能力,实现人机交互的最大满意度目标。比如当用户想学习英语的时候,用户会做出一些手势出来,那么“学习助手”识别这些手势并反馈给用户想要的结果才能真正帮助用户解答疑惑。对于自学习算法来讲,贝叶斯算法具有一定的优势。这个方法可以进行数据的分析和预测。在设计“学习助手”之前,需要进行大量关于手势信息的采集,并进行数据训练。做成之后,根据不同的手势动作,做出下一步的预测,从而让用户满意。其实这个产品是十分有市场竞争力的,原因在于我国是教育大国,家长们也普遍希望自己的孩子们能够在学习上有所突破。无论对哪一方,这款产品势必会给他们带来福音。产品在上市之前需要评估,这需要一部分志愿者参与,或者将该产品部分投放到一些学习平台,来获取客户使用过程中的一些重要数据。这些数据能够更好的帮助提升产品的质量,做出一份令消费者满意的人工智能软件。

好像是一个简单的命名错误

我在学习B6-神经网络基本原理简明教程中Step3-LinearClassification时,在二分类结果可视化时尝试运行了一下ch06,level2的代码,结果error了,经排查后发现应该是ch06中HelperClass.NeuralNet_1_2.py中21行引用错误,原为from HelperClass.ClassifierFunction import *,实际应为from HelperClass.ClassifierFunction_1_0 import *,我在更改这个bug后成功运行了代码

交叉熵损失函数的理解

均方差损失函数,在几何上是直线到样本点的距离的平方和,这样很容易理解。而交叉熵损失函数,是一些概率上的推导,有没有一种类似均方差损失函数的理解方式呢?

CNN实现

老师你好,我在阅读你们代码的时候遇到了一些问题不太理解。
1.在ch17-CNNBasic MinFramework jit_utility.py 中
`
def img2col(input_data, filter_h, filter_w, stride=1, pad=0):

N, C, H, W = input_data.shape
out_h = (H + 2*pad - filter_h)//stride + 1
out_w = (W + 2*pad - filter_w)//stride + 1
img = input_data
if pad > 0:
    img = np.pad(input_data, [(0,0), (0,0), (pad, pad), (pad, pad)], 'constant')
col = np.zeros((N, C, filter_h, filter_w, out_h, out_w))
for i in range(filter_h):
    i_max = i + stride*out_h
    for j in range(filter_w):
        j_max = j + stride*out_w
        col[:, :, i, j, :, :] = img[:, :, i:i_max:stride, j:j_max:stride]
col = np.transpose(col, axes=(0, 4, 5, 1, 2, 3)).reshape(N*out_h*out_w, -1)
return col`

为什么col要变成这个形状(Nout_hout_w, -1)??????

`def col2img(col, input_shape, filter_h, filter_w, stride, pad, out_h, out_w):

N, C, H, W = input_shape
tmp1 = col.reshape(N, out_h, out_w, C, filter_h, filter_w)
tmp2 = np.transpose(tmp1, axes=(0, 3, 4, 5, 1, 2))
img = np.zeros((N, C, H + 2*pad + stride - 1, W + 2*pad + stride - 1))
for i in range(filter_h):
    i_max = i + stride*out_h
    for j in range(filter_w):
        j_max = j + stride*out_w
        img[:, :, i:i_max:stride, j:j_max:stride] += tmp2[:, :, i, j, :, :]
return img[:, :, pad:H + pad, pad:W + pad]`

为什么初始化img的形状是(N, C, H + 2pad + stride - 1, W + 2pad + stride - 1)

双曲正切函数分类

在step3-LinearClassification 06.5中。正切函数的损失函数为什么可以由
loss=−[yilnai+(1−yi)ln(1−ai)]改为loss=−[(1+yi)ln(1+ai)+(1−yi)ln(1−ai)],求大佬问

I have a problem in B6 step2 0.4.4

Maybe,there are some mistakes here.
$$ {\partial J \over \partial w}= \begin{pmatrix} {\partial J \over \partial z_1}{\partial z_1 \over \partial w} \\ \\ {\partial J \over \partial z_2}{\partial z_2 \over \partial w} \\ \\ {\partial J \over \partial z_3}{\partial z_3 \over \partial w} \end{pmatrix} =\frac{1}{3}\begin{pmatrix} (z_1-y_1)x_1 \\ (z_2-y_2)x_2 \\ (z_3-y_3)x_3 \end{pmatrix} $$ $$ =\frac{1}{3} \begin{pmatrix} x_1 & x_2 & x_3 \end{pmatrix} \begin{pmatrix} z_1-y_1 \\ z_2-y_2 \\ z_3-y_3 \end{pmatrix} \tag{m=3} $$ $$ =\frac{1}{m} X^T \cdot (Z-Y) \tag{4} $$
matrix 13 multiply matrix 31 equals matrix 11 rather a matrix 31

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.