Skip to content

Commit

Permalink
Xiaowu/20221223 (microsoft#758)
Browse files Browse the repository at this point in the history
* update

* update

* update
  • Loading branch information
xiaowuhu authored Dec 25, 2022
1 parent fdfaf52 commit 5cd5893
Show file tree
Hide file tree
Showing 338 changed files with 4,493 additions and 4,567 deletions.
32 changes: 16 additions & 16 deletions 基础教程/A2-神经网络基本原理/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,22 +56,22 @@

|网络结构名称|网络结构图|应用领域|
|---|----|----|
|单入<br>单出<br>一层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/4/Setup.png"/>|一元线性回归|
|多入<br>单出<br>一层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/5/setup.png"/>|多元线性回归|
|多入<br>单出<br>一层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/6/BinaryClassifierNN.png"/>|线性二分类<br>|
|多入<br>多出<br>一层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/7/MultipleClassifierNN.png"/>|线性多分类<br>|
|单入<br>单出<br>两层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/9/nn.png"/>|一元非线性回归/拟合<br>可以拟合任意复杂函数|
|多入<br>单出<br>两层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/10/xor_nn.png"/>|非线性二分类|
|多入<br>多出<br>两层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/11/nn.png"/>|非线性多分类|
|多入<br>多出<br>三层|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/12/nn3.png"/>|非线性多分类|
|多层全连接网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/14/mnist_net.png"/>|非线性多分类|
|带批归一化层的多层全连接网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/15/bn_mnist.png"/>|非线性多分类|
|带丢弃层的多层全连接网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/16/dropout_net.png"/>|非线性多分类|
|简单的卷积神经网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/17/conv_net.png"/>|非线性多分类|
|复杂的卷积神经网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/18/mnist_net.png"/>|非线性多分类|
|单向循环神经网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/19/bptt_simple.png"/>|非线性多分类|
|双向循环神经网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/19/bi_rnn_net_right.png"/>|非线性多分类|
|深度循环神经网络|<img src="https://aiedugithub4a2.blob.core.windows.net/a2-images/Images/19/deep_rnn_net.png"/>|非线性多分类|
|单入<br>单出<br>一层|<img src="img/setup1.png"/>|一元线性回归|
|多入<br>单出<br>一层|<img src="img/setup2.png"/>|多元线性回归|
|多入<br>单出<br>一层|<img src="img/BinaryClassifierNN.png"/>|线性二分类<br>|
|多入<br>多出<br>一层|<img src="img/MultipleClassifierNN.png"/>|线性多分类<br>|
|单入<br>单出<br>两层|<img src="img/nn.png"/>|一元非线性回归/拟合<br>可以拟合任意复杂函数|
|多入<br>单出<br>两层|<img src="img/xor_nn.png"/>|非线性二分类|
|多入<br>多出<br>两层|<img src="img/nn11.png"/>|非线性多分类|
|多入<br>多出<br>三层|<img src="img/nn3.png"/>|非线性多分类|
|多层全连接网络|<img src="img/mnist_net.png"/>|非线性多分类|
|带批归一化层的多层全连接网络|<img src="img/bn_mnist.png"/>|非线性多分类|
|带丢弃层的多层全连接网络|<img src="img/dropout_net.png"/>|非线性多分类|
|简单的卷积神经网络|<img src="img/conv_net.png"/>|非线性多分类|
|复杂的卷积神经网络|<img src="img/mnist_net18.png"/>|非线性多分类|
|单向循环神经网络|<img src="img/bptt_simple.png"/>|非线性多分类|
|双向循环神经网络|<img src="img/bi_rnn_net_right.png"/>|非线性多分类|
|深度循环神经网络|<img src="img/deep_rnn_net.png"/>|非线性多分类|

## 写在后面

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,7 @@ $$
sum=1.0
```

<img src="Images/BernoulliDist.png"/>
<img src="img/BernoulliDist.png"/>

图1 参数为0.6时取到x次白球的概率

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ $$
1.0 : 0.000000
```

<img src="Images/likelihood_berno.png"/>
<img src="img/likelihood_berno.png"/>

图1

Expand Down Expand Up @@ -129,7 +129,7 @@ $$

公式8告诉我们,对于指数分布的参数 $\theta$ 的最大似然值等于 $x$ 的均值。

<img src="Images/likelihood_exp.png"/>
<img src="img/likelihood_exp.png"/>
图2

图2中,分别设置$\theta$为0.5和0.3,用公式4得到两组指数分布样本数据$X1,X2$和它们的均值X1.mean和X2.mean,如下:
Expand Down Expand Up @@ -197,7 +197,7 @@ $$
2. 然后根据公式10,在[0,1]区间以0.01的步长遍历作为 $\mu$ 值,计算每个点的 $L$ 值,得到两条似然曲线;
3. 可以看到实线曲线的最大似然值的横坐标在0.38左右,与$\mu_1$相同;虚线曲线的最大似然值的横坐标在0.57左右,与$\mu_2$相同;证明了公式13中关于$\mu_{max}$的估计是正确的。

<img src="Images/likelihood_norm_mu.png"/>
<img src="img/likelihood_norm_mu.png"/>

图3

Expand All @@ -206,7 +206,7 @@ $$
2. 然后根据公式10,在[0,1]区间以0.01的步长遍历作为 $\sigma^2$ 值,计算每个点的 $L$ 值,得到两条似然曲线。
3. 可以看到实线曲线的最大似然值的横坐标在0.24左右,与$\sigma^2_1$相同;虚线曲线的最大似然值的横坐标在0.31左右,与$\sigma^2_2$相同;证明了公式13中关于$\sigma^2_{max}$的估计是正确的。

<img src="Images/likelihood_norm_std.png"/>
<img src="img/likelihood_norm_std.png"/>

图4

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ $$
\theta_{max}=0.7
$$

<img src="Images/likelihood_berno.png"/>
<img src="img/likelihood_berno.png"/>
图1

意味着有10个球里最可能有7个白球和3个黑球,但是我们知道从第一个袋子里拿出10个球的最大概率是5个白球和5个黑球,也就是先验分布值为0.5,而不是0.7,这违背了人们的常识。
Expand Down Expand Up @@ -70,7 +70,7 @@ $$

Beta分布的概率密度函数图:

<img src="Images/BetaDist.png"/>
<img src="img/BetaDist.png"/>
图2

从图中可以看到实线所代表的参数组合$\alpha=3, \beta=3$与正态分布相似,最满足作为先验分布的要求,根据公式3,最大后验概率估计为:
Expand All @@ -94,7 +94,7 @@ $$
\theta = \frac{\alpha + 6}{\alpha+\beta+8}=\frac{3+6}{3+3+8} \approx 0.64
$$

<img src="Images/map_berno.png"/>
<img src="img/map_berno.png"/>
图3

可以看到经过先验概率的矫正后,参数值已经从以前的最大似然估计的0.7变成了0.643,向0.5的方向靠近了一些,但是不可能达到0.5的,因为本次的采样就是7个白球3个黑球,太偏了。解决此问题的方法是多做几次试验,相当于增加采养数量,就会向真实的概率值逼近。
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
<img src="Images/Slide1.JPG"/>
<img src="img/Slide1.JPG"/>

(插入一些说明性文字,重点在介绍上下文,串连)

<img src="Images/Slide2.JPG"/>
<img src="img/Slide2.JPG"/>



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@

故事$^{[1]}$结束了......吗?刚刚开始呢!一系列“麻烦”在等待着木头。图 1.1.1 做了一个简单的“麻烦”预告。

<center>
<img src="Images/Slide3.JPG"/>
<img src="img/Slide3.JPG"/>

图 1.1.1 木头遇到的麻烦
</center>

### 1.1.1 麻烦一:如何运行

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

我们来分析一下故事的发展脉络,最终用公式的形式体现在图 1.2.1 中。

<center>
<img src="Images/Slide4.JPG"/>
<img src="img/Slide4.JPG"/>

图 1.2.1 故事分析
</center>

### 1.2.1 编写程序/代码(Program/Code)

Expand Down Expand Up @@ -110,6 +109,7 @@ $$
这样的话,木头就可以开一个软件服务公司了,名字已经想好了,叫做 WoodySoft,很洋气,哈哈。


<img src="Images/Slide5.JPG"/>
图 1.2.2
<img src="img/Slide5.JPG"/>

图 1.2.2 软件解决方案

Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,9 @@

### 1.3.2 阶段任务(生存期 life cycle)

<center>
<img src="Images/Slide6.JPG"/>
<img src="img/Slide6.JPG"/>

图 1.3.1 软件工程包含的阶段任务
</center>

在一个大型的软件产品项目中,软件工程包括图 1.3.1 所示的这些分阶段的任务:

Expand Down Expand Up @@ -57,7 +56,9 @@

### 1.3.3 软件工程的基本目标

<img src="Images/Slide7.JPG"/>
<img src="img/Slide7.JPG"/>

图 1.3.2 软件工程的基本目标

- 功能达标

Expand Down Expand Up @@ -89,6 +90,8 @@

我们用一张表简单地说明一下$^{[2]}$:

表 1.3.1 软件工程简史

|年代|关键词|事件|
|---|---|---|
|1945~1965|初创|软件工程被提出并命名|
Expand Down Expand Up @@ -130,6 +133,8 @@

造成误解的原因是,在我国大学教育体系的本科生培养层次,与计算机相关的专业有:软件工程、计算机科学、物联网工程、信息安全、数字媒体技术等专业,为了面向职业发展而把这几者混淆在了一起。其中,“理论计算科学”和“计算机系统”两个大类,是为了培养硕士或博士打基础,搞理论研究;“计算机应用”可以有硕士和博士;“软件工程”最高到工学硕士,没有博士,毕业后“进化为”程序员(程序猿)或工程师(攻城狮)。每当看到括号中的两个名词,笔者就会拿起哑铃撸撸铁,感觉特别孔武有力,威猛雄壮。

表 1.3.2 计算机科学与软件工程学的比较

||计算机科学|软件工程|
|---|---|---|
|本科生|理学或工学学士|工学学士|
Expand All @@ -139,11 +144,11 @@
|策略|效果影响力优先|成本与效果的折中|
|成果|论文|项目、产品|

简单的说,计算机科学是科学家、研究员们,发现规律、研究理论,并试图从根本上把规律理论化、公式化,不太在意成本,只在意效果。在图 1.3.2 中展示了计算机科学与软件工程之间的衔接关系。
简单的说,计算机科学是科学家、研究员们,发现规律、研究理论,并试图从根本上把规律理论化、公式化,不太在意成本,只在意效果。在图 1.3.3 中展示了计算机科学与软件工程之间的衔接关系。


<img src="img/Slide8.JPG"/>

<center>
<img src="Images/Slide8.JPG"/>
图 1.3.2 计算机科学与软件工程的关系
</center>
图 1.3.3 计算机科学与软件工程的关系

软件工程发展了这么多年,早已经形成了一套科学的、成熟的方法做理论指导,当然可以算作计算机科学的一部分。工程师和程序员们,侧重于用成熟的方法解决实际问题,要在成本和效果二者之间做折中考虑。
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,9 @@

我们在这一节中并不展开讲解,只是罗列一下知识领域(Knowledge Area),让大家可以粗略地认识到软件工程的复杂性,便于做好学习本书的充分准备。具体细节会渗透在后面的每一章节中。

<center>
<img src="Images/Slide9.JPG"/>
<img src="img/Slide9.JPG"/>

图 1.4.1 软件工程知识领域
</center>

图 1.4.1 列出了 15 个知识领域及其分类,详细说明在表 1.4.1 中。

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

微软(Microsoft)是以提供软件为主要盈利手段的公司。描述像微软这样的软件公司的软件开发模式也可以使用几个公式。

<center>
<img src="Images/Slide10.JPG"/>
<img src="img/Slide10.JPG"/>

图 1.5.1 微软的软件工程的组成要素(公式)
</center>


#### 程序

Expand Down Expand Up @@ -77,19 +77,19 @@ $$
微软 = 软件产品 + 商业模式 \tag{1.15}
$$

<center>
<img src="Images/Slide11.JPG"/>

<img src="img/Slide11.JPG"/>

图 1.5.2 微软的软件工程组成要素(树状图)
</center>


### 1.5.2 商业模式

商业模式不是本书的讨论范围,但是有三个概念要简单说一下:产品、项目、服务。

<center>
<img src="Images/Slide12.JPG"/>
<img src="img/Slide12.JPG"/>

图 1.5.3 软件商业模式
</center>


先来看看这三者的区别。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ windows phone
uwp
boss

<img src="Images/Slide1.JPG"/>
<img src="img/Slide1.JPG"/>

(插入一些说明性文字,重点在介绍上下文,串连)

<img src="Images/Slide2.JPG"/>
<img src="img/Slide2.JPG"/>



Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

故事就写到这里吧,下面总结一下微软这样的公司需要什么样的人做 SDE。

<img src="Images/Slide3.JPG"/>
<img src="img/Slide3.JPG"/>

### 2.2.1 技能点是否符合 JD 要求

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@

在木头的面试中,有过这样一道题,如图 2.3.1 所示。

<center>
<img src="Images/Slide4.JPG"/>
<img src="img/Slide4.JPG"/>

图 2.3.1 算法与代码能力
</center>

有一个 [0-100] 的数组,在随机位置无回放地从 1-100 共 100 之间取一个数填入,还富余出一个空位,随机填入 1-100 之间的任意一个数。求重复的数字是什么?至少用 5 种方法写出代码求解。

Expand Down Expand Up @@ -111,11 +109,9 @@ def method_3_sort(data):
4. 从位置 1 取出数字 5,放到位置 5;
5. 从位置 5 取出数字 1,放到位置 1,但发现位置 1 上已经是 1 了,是重复数字。

<center>
<img src="Images/Slide5.JPG"/>
<img src="img/Slide5.JPG"/>

图 2.3.2 追溯法
</center>

这种解法是利用了本题的特点:数据和数组序号可以一一对应。

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
## 2.4 建模与设计能力

<center>
<img src="Images/Slide6.JPG"/>
<img src="img/Slide6.JPG"/>

图 2.4.1 建模
</center>

### 2.4.1 建模题

Expand Down Expand Up @@ -212,11 +210,9 @@ class RibukCube():

这个问题需要有一定的系统设计能力了

<center>
<img src="Images/Slide7.JPG"/>
<img src="img/Slide7.JPG"/>

图 2.4.2 股票预测系统设计
</center>

由于是每个交易日都要进行这样的操作,所以全自动化流程是很有必要的。

Expand Down
Loading

0 comments on commit 5cd5893

Please sign in to comment.