-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsearch.xml
431 lines (431 loc) · 123 KB
/
search.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
<?xml version="1.0" encoding="utf-8"?>
<search>
<entry>
<title><![CDATA[韩语音变第5课|连音现象2:双韵尾的连音]]></title>
<url>%2F2019%2F02%2F15%2Fvideo-Learn-Korean-lesson-015%2F</url>
<content type="text"><![CDATA[双韵尾+母音开头的字时,双韵尾左边的位置不动,右边的韵尾移到后面的‘ㅇ’位置上,作为母音的声母。 上一篇:韩语音变第4课|连音现象1:单韵尾的连音 上堂课复习: - 单韵尾的连音 5.1 双韵尾连音现象双韵尾+母音开头的字时,双韵尾左边的位置不动,右边的韵尾移到后面的‘ㅇ’位置上,作为母音的声母。此时,ㄳㅄ中的ㅅ要发成紧音。例如몫이[목씨],없어요[업써요]。 5.2 韵尾连音特殊情况韵尾在ㅏㅓㅗㅜㅟ之前,要先变成代表音来发音。 5.2.1 两个单词잎 위 -> [입]+위 -> [이뷔] 5.2.2 一个单词(合成词)맛없어요 -> [마덥써요]다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语音变</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语音变第4课|连音现象1:单韵尾的连音]]></title>
<url>%2F2019%2F02%2F15%2Fvideo-Learn-Korean-lesson-014%2F</url>
<content type="text"><![CDATA[如果前面的字有子音为韵尾(即单韵尾),后面的字以‘ㅇ’开头时,前面的韵尾会移到后面子音‘ㅇ’的位置,作为后面一个字的声母与母音一起发音,这种现象称为连音。 上一篇:韩语音变第3课|韵尾‘ㅎ’的发音变化下一篇:韩语音变第5课|连音现象2:双韵尾的连音 上堂课复习: ㅎㄶㅀ+ㄱㄷㅈ -> ㅎ脱落+[ㅋㅌㅊ] ㅎㄶㅀ+ㅅ -> ㅎ脱落+[ㅆ] ㅎ+ㄴ -> [ㄴ]+[ㄴ] ㅎㄶㅀ+모음 -> ㅎ脱落 4.1 单韵尾连音现象如果前面的字有子音为韵尾(即单韵尾),后面的字以‘ㅇ’开头时,前面的韵尾会移到后面子音‘ㅇ’的位置,作为后面一个字的声母与母音一起发音,这种现象称为连音。例如한국어[한구거]。唯独ㅎ没有连音,ㅎ会脱落,如좋은[조은]。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语音变</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语音变第3课|韵尾‘ㅎ’的发音变化]]></title>
<url>%2F2019%2F02%2F13%2Fvideo-Learn-Korean-lesson-013%2F</url>
<content type="text"><![CDATA[韵尾‘ㅎ’自身发生音的脱落,当后面接子音时可能发生子音变为送气音或紧音,或产生鼻音的同化,后面接母音时双韵尾的左半部分与母音相拼,作为单韵尾不发声。 上一篇:韩语音变第2课|双韵尾的发音变化下一篇:韩语音变第4课|连音现象1:单韵尾的连音 上堂课复习: 一般发左半边的音 ㄳ -> [ㄱ] ㄵ -> [ㄴ] ㄼ ㄽ ㄾ -> [ㄹ] ㅄ -> [ㅂ] 一般发右半边的音 ㄺ -> [ㄱ] ㄻ -> [ㅁ] ㄿ -> [ㅂ] 3.1 ㅎ+ㄱㄷㅈ韵尾ㅎ ㄶ ㅀ的后面接平音ㄱ,ㄷ,ㅈ时,左边的ㄴ,ㄹ分别发单韵母ㄴ,ㄹ的音。右边的ㅎ与ㄱ,ㄷ,ㅈ结合,变为送气音ㅋ,ㅌ,ㅊ。例如많다[만타], 옳지[올치]。 3.2 ㅎ+ㅅ韵尾ㅎ ㄶ ㅀ的后面接子音ㅅ时,左边的ㄴ,ㄹ分别发单韵母ㄴ,ㄹ的音。右边的ㅎ不发音,但送音ㅅ变成紧音ㅆ。例如많니[만니], 많습니다[만씁니다]。 3.3 ㅎ+ㄴ韵尾ㅎ的后面接子音ㄴ时,ㅎ也发ㄴ的音。如놓는[논는]。 3.4 ㅎ+母音韵尾ㅎ ㄶ ㅀ的后面接母音时,ㄴ,ㄹ分别与其后的母音相拼,发为声母,而ㅎ不发音。例如많아[마나], 옳았습니다[오랃씁니디]。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语音变</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语音变第2课|双韵尾的发音变化]]></title>
<url>%2F2019%2F02%2F13%2Fvideo-Learn-Korean-lesson-012%2F</url>
<content type="text"><![CDATA[双韵尾单独发音或在子音前时,一般只发半边的音。与母音结合时,产生连音现象。 上一篇:韩语音变第1课|韩国语发音介绍下一篇:韩语音变第3课|韵尾‘ㅎ’的发音变化 2.1 什么是韵尾?子音分为在母音前发音和在母音后发音两种情况。在母音后,即在音节末尾发音的子音叫做韵尾。单韵尾是由一个子音形成的韵尾,如:각, 난。双韵尾是由两个子音形成的韵尾,如:값, 젊。 2.2 双韵尾发音变化2.2.1 发左边音双韵尾ㄳ ㅄ ㄼ ㄵ ㄽ ㄾ单独发音,或在子音前时,一般发左半边的音。 2.2.2 发右边音双韵尾ㄻ ㄺ ㄿ单独发音,或在子音前时,一般发右半边的音。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语音变</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语音变第1课|韩国语发音介绍]]></title>
<url>%2F2019%2F02%2F13%2Fvideo-Learn-Korean-lesson-011%2F</url>
<content type="text"><![CDATA[韩语是一种黏着语,音节之间会相互影响,产生音变。 下一篇:韩语音变第2课|双韵尾的发音变化 1.1 韩语发音变化有哪些?1.1.1 连音例:한국어 -> [한구거] 1.1.2 鼻音化例:한국말 -> [한궁말] 1.1.3 腭音化例:같이 -> [가치] 1.1.4 紧音化例:학교 -> [학꾜] 1.1.5 ‘ㄷ’的不规则变化例:걷다 + 어서 -> 걸어서 1.2 韩语发音变化的复杂性连音,鼻音化,送气音化,紧音化,腭音化,音的添加,音的脱落等。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语音变</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第10课|韵尾(4) ㄻ ㄺ ㄼ ㄿ ㄶ ㅀ]]></title>
<url>%2F2019%2F02%2F07%2Fvideo-Learn-Korean-lesson-010%2F</url>
<content type="text"><![CDATA[韵尾(6/29个) ㄻ ㄺ ㄼ ㄿ ㄶ ㅀ 上一篇:韩语发音第9课|韵尾(3) ㄳ ㅄ ㄵ ㄽ ㄾ 上堂课复习: 复合韵尾(5/29个) ㄳ ㅄ ㄵ ㄽ ㄾ 作为韵尾只发左边的音,若后面的音节以母音开头,遵循连音规则。 10.1 复合韵尾ㄻ ㄺ ㄼ ㄿ ㄶ ㅀ10.1.1 ㄻ ㄺ ㄼ ㄿ复合韵尾ㄻ ㄺ ㄼ ㄿ,单独发音时都是只发右边的音。例如앎[암]。 但是,当其后有母音相连时,左边的音节只发左边的单韵尾,而右边的韵尾与下一个音节的母音相拼,成为后一个音节的首音,有时后一个音节发重音。例如젊어[절머]。 当其后有子音相连时,左边的音节只发左边的单韵尾,右边的音节发自己的子音,有时改为重音。例如젊다[점따]。 ㄺ的特殊情况:맑다, 늙다等词的词干后,如果有ㄱ相连时韵尾发ㄹ而不是ㄱ的音。例如맑게, 늙고发音为[말께][늘꼬],而不是[막께][늑꼬]。 10.1.2 ㄶ ㅀ复合韵尾ㄶ ㅀ,单独发音时只发左边的音,右边不发音。 双韵尾ㄶ ㅀ的后面接平音ㄱ,ㄷ,ㅈ时,左边的ㄴ,ㄹ分别发单韵母ㄴ,ㄹ的音。右边的ㅎ与ㄱ,ㄷ,ㅈ结合,变为送气音ㅋ,ㅌ,ㅊ。例如많다[만타], 옳지[올치]。 双韵尾ㄶ ㅀ的后面接子音ㄴ,ㅅ时,左边的ㄴ,ㄹ分别发单韵母ㄴ,ㄹ的音。右边的ㅎ不发音,但送音ㅅ变成紧音ㅆ。例如많니[만니], 많습니다[만씁니다]。 双韵尾ㄶ ㅀ的后面接母音时,ㄴ,ㄹ分别与其后的母音相拼,发为声母,而ㅎ不发音。例如많아[마나], 옳았습니다[오랃씁니디]。 10.2 日常用语 어디 가세요? 去哪儿? 학교에 갑니다. 去学校。 도서관에 갑니다. 去图书馆。 어디指“哪儿”,가指“去”,에是助词,表示方向。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第9课|韵尾(3) ㄳ ㅄ ㄵ ㄽ ㄾ]]></title>
<url>%2F2019%2F02%2F07%2Fvideo-Learn-Korean-lesson-009%2F</url>
<content type="text"><![CDATA[韵尾(5/29个) ㄳ ㅄ ㄵ ㄽ ㄾ 上一篇:韩语发音第8课|韵尾(2) ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ下一篇:韩语发音第10课|韵尾(4) ㄻ ㄺ ㄼ ㄿ ㄶ ㅀ 上堂课复习: 韵尾(9/29个) ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ ㅅ ㅈ ㅊ ㅌ ㅎ ㅆ 作为韵尾发‘ㄷ’。 ㅋ ㄲ 作为韵尾发‘ㄱ’。 ㅍ 作为韵尾发‘ㅂ’。 9.1 复合韵尾ㄳ ㅄ ㄵ ㄽ ㄾ复合韵尾ㄳ ㅄ ㄵ ㄽ ㄾ,单独发音时都是只发左边的音。例如값[갑]。 但是,当其后有母音相连时,左边的音节仍只发左边的单韵尾,而右边的韵尾与下一个音节的母音相拼,成为后一个音节的首音,有时后一个音节发重音。例如값에[갑쎄]。 当其后有子音相连时,左边的音节仍只发左边的单韵尾,右边的音节发自己的子音,有时改为重音。例如없다[업따]。 9.2 连音现象当左边的音节以子音为韵尾、下一个音节是以‘ㅇ’为开头的母音时,因为母音前的‘ㅇ’不发音,所以前面的韵尾会移到后面子音‘ㅇ’的位置,与后面的母音一起发音。例如한국어[한구거]。 9.3 日常用语 이것은 무엇이에요? 这是什么? 이것은 책이에요. 这是书。 이것은 핸드폰이에요. 这是手机。 이것은指‘这’,무엇指‘什么’,에요指‘是’,连起来就是“这是什么”。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第8课|韵尾(2) ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ]]></title>
<url>%2F2019%2F01%2F31%2Fvideo-Learn-Korean-lesson-008%2F</url>
<content type="text"><![CDATA[韵尾(9/29个) ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ 上一篇:韩语发音第7课|韵尾(1) ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ下一篇:韩语发音第9课|韵尾(3) ㄳ ㅄ ㄵ ㄽ ㄾ 上堂课复习: 韵尾代表音(7个) ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ 8.1 韵尾8.1.1 ㅅ ㅈ ㅊ ㅌ ㅎ ㅆ作为韵尾发音都是‘ㄷ’。例如낫,낮,낯,낱,낳,났,虽然写法各异,意思不同,但发音多是[난]。 8.1.2 ㅋ ㄲ作为韵尾发音都是‘ㄱ’。例如부엌,동녘,밖,깎다这四个词的发音分别为[부억],[동녁],[박],[깍다]。 8.1.3 ㅍ作为韵尾发音是‘ㅂ’。例如앞,잎,숲三个词的发音分别是[압],[입],[숩]。 8.2 읽어보세요 꽃 낫 낯 낮 花 镰刀 脸 白天 부엌 깎다 끝 숲 厨房 削 结束 树林 8.3 韩语的数字8.3.1 汉字词数字 一 二 三 四 五 六 七 八 九 十 일 이 삼 사 오 육 칠 팔 구 십 8.3.2 固有词数字应用于量词前、年龄、时间等。 一 二 三 四 五 六 七 八 九 十 하나 둘 셋 넷 다섯 여섯 일곱 여덟 아홉 열 8.4 日常用语 지금 몇 시 예요? 现在几点了? 지금 열 시 예요. 现在十点了。 지금指“现在”,몇指“几”,시指“时”,也就是“点”,예요指“是”,连起来就是“现在几点了”。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第7课|韵尾(1) ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ]]></title>
<url>%2F2019%2F01%2F31%2Fvideo-Learn-Korean-lesson-007%2F</url>
<content type="text"><![CDATA[韵尾代表音(7个) ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ 上一篇:韩语发音第6课|子音(3) 重音 ㄲ ㄸ ㅃ ㅆ ㅉ 送气音 ㅊ ㅋ ㅌ ㅍ下一篇:韩语发音第8课|韵尾(2) ㅅ ㅈ ㅊ ㅋ ㅌ ㅍ ㅎ ㄲ ㅆ 上堂课复习: 母音 ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 复合母音 ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 子音 平音 ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅅ ㅇ ㅈ 气音 ㅋ ㅌ ㅍ ㅊ ㅎ 重音 ㄲ ㄸ ㅃ ㅆ ㅉ 7.1 什么是韵尾子音分为在母音前发音和在母音后发音两种情况。在母音后,即在音节末尾发音的子音叫做韵尾。 nan —> 난难 —> ㄴ+ㅏ+ㄴ 7.2 韵尾的分类7.2.1 单韵尾单韵尾是由一个子音形成的韵尾,如:각, 난 7.2.2 双韵尾双韵尾是由两个子音形成的韵尾,如:값, 젊 7.3 韵尾列表在韩语中,除了ㄸ, ㅃ, ㅉ三个子音外,其他子音都可以当韵尾,但在实际发音中只发7个对应的代表音。 代表音 韵尾 ㄱ ㄱ ㅋ ㄲ ㄳ ㄺ ㄴ ㄴ ㄵ ㄶ ㄷ ㄷ ㅅ ㅈ ㅊ ㅌ ㅎ ㅆ ㄹ ㄹ ㄺ ㄼ ㄽ ㄾ ㅀ ㅁ ㅁ ㄻ ㅂ ㅂ ㅍ ㄼ ㅄ ㄿ ㅇ ㅇ 7.4 韵尾的代表音7.4.1 ㄱ发音有点像促音,气流迅速地在舌根处被截住。 例:악 국 학 박 각 7.4.2 ㄴ发音有点像汉语的an。 例:안 간 난 산 는 7.4.3 ㄷ发音有点像促音,气流迅速地在舌尖处被截住。 例:받 듣 갇 삳 믿 7.4.4 ㄹ有点像儿化音,卷舌音。 例:알 갈 살 불 랄 7.4.5 ㅁ有点像鼻音,母音后加m。 例:암 엄 곰 밤 맘 7.4.6 ㅂ双唇快速闭嘴。 例:압 삽 합 겹 밥 7.4.7 ㅇ发音类似汉语的ng。 항 강 상 양 앙 7.5 单词练习 눈 돈 사전 겨울 발 眼睛 钱 字典 冬天 脚 쌀 김치 담배 여름 가방 米 泡菜 香烟 夏天 包 공부 한국 중국 책 밥 学习 韩国 中国 书 饭 7.6 日常用语 읽어보세요. 读一读。 수고하셨어요. 辛苦了。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第6课|子音(3) 重音 ㄲ ㄸ ㅃ ㅆ ㅉ 送气音 ㅊ ㅋ ㅌ ㅍ]]></title>
<url>%2F2019%2F01%2F27%2Fvideo-Learn-Korean-lesson-006%2F</url>
<content type="text"><![CDATA[重音 ㄲ ㄸ ㅃ ㅆ ㅉ 送气音 ㅊ ㅋ ㅌ ㅍ 上一篇:韩语发音第5课|复合母音 ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ下一篇:韩语发音第7课|韵尾(1) ㄱ ㄴ ㄷ ㄹ ㅁ ㅂ ㅇ 上堂课复习: 复合母音(11个) ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 야 여 요 유 얘 예 와 왜 워 웨 의 6.1 子音的分类韩语的子音一共19个,依照发音方式的不同分为:平音、送气音、重音三种。在韩语的平音中,有5个子音分别由相对应的气音与重音。 平音 ㄱ kǎ ㄴ ㄷ tǎ ㄹ ㅁ ㅂ pǎ ㅅ ㅇ ㅈ cǎ 气音 ㅋ kà ㅌ tà ㅍ pà ㅊ cà ㅎ 重音 ㄲ gà ㄸ dà ㅃ bà ㅆ ㅉ zà 6.2 复合母音6.2.1 重音6.2.1.1 ㄲ가 - 까 6.2.1.2 ㄸ다 - 따 6.2.1.3 ㅃ바 - 빠 6.2.1.4 ㅆ사 - 싸 6.2.1.5 ㅉ자 - 짜 6.2.2 送气音6.2.2.1 ㅊ较重的“c”。书写时先写丶,再写ス。 6.2.2.2 ㅋ较重的“k”。 6.2.2.3 ㅌ较重的“t”。 6.2.2.4 ㅍ较重的“p”。书写时先写一,再写||,再写一。 6.3 单词练习6.3.1 重音单词 꾸미다 꼬리 끄다 뽀뽀 装饰 尾巴 关 亲亲 허리띠 아빠 오빠 뿌리 腰带 爸爸 哥哥 根 싸다 비싸다 쓰다 짜다 便宜 贵 写 咸 注: 허리띠 - 허리指“腰”,띠指“带”,合起来指“腰带”。 오빠 - 女孩子对男孩子的称呼。 비싸다 - 싸다指便宜,비指否定,即“非”,连起来即“不便宜”,“贵”。 다 - 动词或形容词词尾,名词后无缀다。 6.3.2 送气音单词 고추 기차 치마 코 辣椒 火车 裙子 鼻子 크다 타조 아프다 스키 大 鸵鸟 痛 滑雪 우표 포도 투우 키스 邮票 葡萄 斗牛 吻 6.4 日常用语 잘 막겠습니다! 吃饭前用语,指“我会好好吃的”。 잘 막었습니다! 吃饭后用语,指“我吃好了”。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第5课|复合母音 ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ]]></title>
<url>%2F2019%2F01%2F27%2Fvideo-Learn-Korean-lesson-005%2F</url>
<content type="text"><![CDATA[复合母音(11个) ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 야 여 요 유 얘 예 와 왜 워 웨 의 上一篇:韩语发音第4课|子音(2) ㅂ ㅅ ㅈ ㅇ ㅎ下一篇:韩语发音第6课|子音(3) 韩语学习第6课|子音(3) 重音 ㄲ ㄸ ㅃ ㅆ ㅉ 送气音 ㅊ ㅋ ㅌ ㅍ 上堂课复习: 子音(5/19个) ㅂ ㅅ ㅈ ㅇ ㅎ 5.1 母音总表 单母音(10个) ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 复合母音(11个) ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 5.2 复合母音5.2.1 ㅑ ㅑ = ㅣ + ㅏ 读音类似/ia/。 5.2.2 ㅕ ㅕ = ㅣ + ㅓ 读音类似/ieo/。 5.2.3 ㅛ ㅛ = ㅣ + ㅗ 读音类似/io/。 5.2.4 ㅠ ㅛ = ㅣ + ㅜ 读音类似/iu/。 5.2.5 ㅒ ㅒ = ㅣ + ㅐ 读音类似/ie/。使用频率不高,只在애, 개, 재等几个词中出现。 5.2.6 ㅖ ㅖ = ㅣ + ㅔ 读音类似/ie/。使用频率不高。 5.2.7 ㅘ ㅘ = ㅗ + ㅏ 读音类似/oa/(wa)。 5.2.8 ㅙ ㅙ = ㅗ + ㅐ 读音类似/we/。왜 - 为什么? 5.2.9 ㅝ ㅝ = ㅜ + ㅓ 读音类似/uo/。 5.2.10 ㅞ ㅞ = ㅜ + ㅔ 读音类似/ue/。 5.2.11 ㅢ ㅢ = ㅡ + ㅣ 读音类似/əi/。这个复合母音有一些特殊的发音规则: 位于词首发“ㅢ”的本音,如:의사 - 医生 位于词中或词末或当助词使用时,发音会有所变化。 5.3 单词练习 여우 회의 우유 화가 얘기 狐狸 会议 牛奶 画家 故事 귀 의사 의자 왜 하와이 耳朵 医生 椅子 为什么 夏威夷 注: 여우 - 狐狸,读起来像“尤物”。 가 - 表示xx家 얘기 - 故事,이야기的缩写。 5.4 日常用语 차음 뵙겠습니다! 初次见面 반갑습니다! 见到你很高兴。 차음是“初次”的意思。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第4课|子音(2) ㅂ ㅅ ㅈ ㅇ ㅎ]]></title>
<url>%2F2019%2F01%2F26%2Fvideo-Learn-Korean-lesson-004%2F</url>
<content type="text"><![CDATA[子音(5/19个) ㅂ ㅅ ㅈ ㅇ ㅎ 上一篇:韩语发音第3课|子音(1) ㄱ ㄴ ㄷ ㄹ ㅁ下一篇:韩语发音第5课|复合母音(11个) ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 上堂课复习: 子音(5/19个) ㄱ ㄴ ㄷ ㄹ ㅁ 4.1 子音的分类韩语的子音一共19个,依照发音方式的不同分为:平音、送气音、重音三种。在韩语的平音中,有5个子音分别由相对应的气音与重音。 平音 ㄱ kǎ ㄴ ㄷ tǎ ㄹ ㅁ ㅂ pǎ ㅅ ㅇ ㅈ cǎ 气音 ㅋ kà ㅌ tà ㅍ pà ㅊ cà ㅎ 重音 ㄲ gà ㄸ dà ㅃ bà ㅆ ㅉ zà 4.2 子音(2)4.2.1 ㅂ与汉语中p发音相似。对应键盘Q。바 버 보 부 브 비 배 베 뵈 뷔 4.2.2 ㅅ与汉语中s发音相似。介于s和c之间。对应键盘T。사 서 소 수 스 시 새 세 쇠 쉬 4.2.3 ㅈ与汉语中c发音相似。书写类似ス。对应键盘W。자 저 조 주 즈 지 재 제 죄 쥐 4.2.4 ㅇ做子音时不发音,起装饰作用。对应键盘D。아 어 오 우 으 이 애 에 외 위 4.2.5 ㅎ与汉语中h发音相似。对应键盘G。하 허 호 후 흐 히 해 헤 회 휘 4.3 单词练习 보리 바나나 바보 비누 소 大麦 香蕉 笨蛋 香皂 牛 버스 사다리 모자 사자 자두 巴士 梯子 帽子 狮子 李子 주사 지도 오후 하나 호수 打针 地图 下午 一 湖水 注: 바보 - 笨蛋,可爱的用语,小傻瓜,小笨蛋。 사다리 - 사指四,다리指腿,四条腿的梯子。 하나 - 韩国有两套数字系统,一套与汉语类似,十分简单;另一套是韩国本土语,较难,하나属于第二套。 4.4 日常用语 죄송합니다! 对不起! 미안합니다! 对不起! 감사합니다! 谢谢! 고맙습니다! 谢谢! 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第3课|子音(1) ㄱ ㄴ ㄷ ㄹ ㅁ]]></title>
<url>%2F2019%2F01%2F25%2Fvideo-Learn-Korean-lesson-003%2F</url>
<content type="text"><![CDATA[子音(5/19个) ㄱ ㄴ ㄷ ㄹ ㅁ 上一篇:韩语发音第2课|单母音 ㅏㅓㅗㅜㅡㅣㅐㅔㅚㅟ下一篇:韩语发音第4课|子音(2) ㅂ ㅅ ㅈ ㅇ ㅎ 上堂课复习: 单母音(10个) ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 아 어 오 우 으 이 애 에 외 위 3.1 子音的分类韩语的子音一共19个,依照发音方式的不同分为:平音、送气音、重音三种。在韩语的平音中,有5个子音分别由相对应的气音与重音。 平音 ㄱ kǎ ㄴ ㄷ tǎ ㄹ ㅁ ㅂ pǎ ㅅ ㅇ ㅈ cǎ 气音 ㅋ kà ㅌ tà ㅍ pà ㅊ cà ㅎ 重音 ㄲ gà ㄸ dà ㅃ bà ㅆ ㅉ zà 3.2 子音(1)3.2.1 ㄱ与汉语中k发音相似。对应键盘R。가 거 고 구 그 기 개 게 괴 귀 3.2.2 ㄴ与汉语中n发音相似。对应键盘S。나 너 노 누 느 니 내 네 뇌 뉘 3.2.3 ㄷ与汉语中t发音相似。对应键盘E。다 더 도 두 드 디 대 데 되 뒤 3.2.4 ㄹ与汉语中l发音相似。写法与“己”相似。对应键盘F。라 러 로 루 르 리 래 레 뢰 뤼 3.2.5 ㅁ与汉语中m发音相似。对应键盘A。마 머 모 무 므 미 매 메 뫼 뮈 3.3 单词练习 가구 고기 가루 구두 애기 家具 肉 粉末 皮鞋 婴儿 나이 누구 나가다 어디 미리 年纪 谁 出去 哪儿 事先 다리 도로 라디오 나누기 머리 腿 道路 收音机 分享 头 注: 나가다 - 出去,其中다表示动词。 3.4 日常用语 안녕히 가세요! 再见(敬语,不走的人对走的人说) 안녕히 계세요!! 再见(敬语,走的人对不走的人说) 안녕 再见(非敬语) 안녕是“安宁”的意思,가指“走”,连起来表示“请你安宁地走吧”。계同계시다,다表示动词,계시다指“在”,连起来表示“请你安宁地呆在这里吧”。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第2课|单母音 ㅏㅓㅗㅜㅡㅣㅐㅔㅚㅟ]]></title>
<url>%2F2019%2F01%2F25%2Fvideo-Learn-Korean-lesson-002%2F</url>
<content type="text"><![CDATA[单母音(10个) ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 아 어 오 우 으 이 애 에 외 위 上一篇:韩语发音第1课|什么是韩文?한글은 무엇인가?下一篇:韩语发音第3课|子音(1) 上堂课复习: 韩语是谁发明的?什么时候发明的?发明背景是什么? 1443年;世宗大王;朝鲜半岛说韩语写汉语(文言分离,庶民多文盲) 韩语的构造 — 子音和母音 子音相当于声母,母音相当于韵母 韩语词汇 70%汉字词,20%固有词20%,10%外来词 韩语的语法特点 主宾谓结构 2.1 母音总表 单母音(10个) ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 复合母音(11个) ㅑ ㅕ ㅛ ㅠ ㅒ ㅖ ㅘ ㅙ ㅝ ㅞ ㅢ 2.2 单母音2.2.1 ㅏ与汉语韵母a相似,但位置较汉语音稍微靠后。先写|再写-,写在方框右半边。对应键盘K。 2.2.2 ㅓ与汉语韵母o相似,介于o与e中间,有点轻的o,\o\。对应键盘J。 2.2.3 ㅗ与ㅓ有点像,有点重的o,\o:\。对应键盘H。 2.2.4 ㅜ与汉语韵母u相似。对应键盘N。 2.2.5 ㅡ有点像牙齿咬住嘴咧开发“饿”的音。对应键盘M。 2.2.6 ㅣ与汉语韵母i相似。对应键盘L。 2.2.7 ㅐai,与音标“ae”相似。对应键盘O。 2.2.8 ㅔoi,与ㅔ发音相似,现实中难以区别。书写时左边的|稍微比右边的|短一些会更为美观。对应键盘P。 2.2.9 ㅚo:i,有点像\we\,韩语中“为什么”的发音。对应键盘HL。 2.2.10 ㅟui,有点像\wi:\。对应键盘NL。 2.3 单母音的书写 母音可以单独发音,子音只能搭配母音发音。母音书写的时候需要加子音“ㅇ”,此时“ㅇ”不发音,只发母音的音,“ㅇ”起装饰作用。 ㅏ ㅓ ㅗ ㅜ ㅡ ㅣ ㅐ ㅔ ㅚ ㅟ 아 어 오 우 으 이 애 에 외 위 2.4 读音练习2.4.1 读音对比 아-어 오-우 어-이 이-아 애-에 외-위 으-이 위-에 외-이 으-에 2.4.2 单词练习 아이 오이 이 아우 위 孩子 黄瓜 牙 弟弟 胃 注: 아우 - 弟弟(七八十岁的老年人对弟弟的敬称) 2.5 日常用语 안녕하세요! 您好(敬语,对长辈、老师、第一次见面的人) 안녕! 你好或再见(非敬语,对朋友、亲密的人、比自己小的人) 안녕是“安宁”的意思,하세요是敬语“请”,连起来表示“请你安宁吧,请你平安吧”。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[我的2019年]]></title>
<url>%2F2019%2F01%2F01%2Fmy-2019%2F</url>
<content type="text"><![CDATA[私密文档,请输入密码。 Incorrect Password! No content to display! U2FsdGVkX1/Sdp3dPUXo6qmEBkQUs4HeN8w8iA5otmtVu3MxAIDXUrEPL2KXgntfLHINtFK8qD64q+ray0ttYehFzBCU/Altg+wLUqYTsvnbILxsuaHdntTkyuyVzYgdTNKjL6TrCZ7zN9re2KhB5vHV2UlgtkN01X84IZodfhuO29t2a1w+NvtAAeYT0bByA7+cK3D2BBxGQDxRPD4MPVT1w4faOdrultXj+5gH0MJzgMw/xY2GF0UuLD5zRW29V65uL/CTWB1IRvo3ffGkGkcjQ7s3Nn+ERrx2GA7u4VNGjK7P/x8mJGL4IYIMiDQa6fUf/zaaxbAKQypsgj1azN1CJHFNlEMky3g/Q4OjunrSCP+fmpiJszx5AF8L5TWMm/+7+Z5yCxeimn2YVH7JSFzMAhOYJVR2qVBfM48RzmZllaYRc13XMXI/4sGOzrGcXIkZqVq7jNswH5C8WG5ZjTWAv0lpWm7eeOTwKY+RCbX58fLOBFDbe1GPUquzVcvmUGNJeiEDf/kuqinEmiQw3+8Uyf9nhSP/x914tvHicR+47qt4Lyhb+vt74IrmoqszVUSGoaGjcBM4k8jp4U9sXxeYg2xGWgc3lbxqx/03ijPCz8J6kPHHy0kqKqP/Bq5XHtpgw6NhIEUlxBO+1Uh2JdgRWxhVSHNW2olBu6SvLKm5RgVYyNwDYsokG70mtU+Wadv5db/PWhq98e8aGpDwhKm1IbGFAHpONx6B/LgJO1Rjn4uPHi7IBBBHqM3KsDTpNXlMz+HzFzt7z4IxsCBybtfPGWIo6fJ48C7Q2wb73jE/uUFoLYBaBFxUGU1RwMw8kFuabCJxxkrXZgcXo1SxyqsGSoZ1zwKFATNOZhpXL8mF4umd5DpTIXenkEfh8vvPi2RonNmC2TQZcjBWXV9l8Uq1LPMMNpwhH1riyzdP98AtIUtXEjgptR8iqvNMm6RPY0wj7OLjqd0WEb1ROCZVwLyO7aMpdqqh0nA/yQ56jw2qjb9W+sU7+PO1dLY0zU1IyDxZAUsTukdKqBJ+rBj5aUhNlIAPb3d47rZA/zuMF/vFGWT94jWEm3H7ZdUwri3jkl9kguZIV2aTQMfSWHGv6yFHtgDB2iyy6jOCNlGGJoYbpEq/j19ZtgU0ZWFbbyIfGqCpyWCz51TidrzBgsoRCyhOV9UUmuaBCpsBgkzRysmwJXooNZ54g40g46gRpAvJocUlHozDJdctnOyJ4erg5gZHpxMX6a4sbeSu74IQVS3LxkQSZIpld2eflJIn1MOYLN16gsNQzuW61E2m1+v+vafaGP9PoymXj1imvJruKlldyJ9Pm/0lJpRBP0HjJ5ZSS9i4W58+Ih3qbg0ebyn131QqfdFApJjvUZU2Zboa5ekPjxToJNhCg3p4MSghqqTLfI2LhjsIMVANCYSe4CP1FFxuw35LTJmvEcIkyWDYErn3FGZVi7GSAno86uamOs/wxMiiT6kX6KpOSaUIM5LtJCT4Sls8Oom/9SSkM8jEFnNi/9zN0TJmDzro5WzKzpD0ZsWbDQSBAHNGvjXHjsKcDasilBQM2VB1uvkONtSqY04rAshhuDdVRVR8mF+6Ivo/FAXLWlSHpgsYhhmlXlQ1rcCmANM8iKNWlAdsrIbP0rrv3pfOFPAxrp6R3pH2mvdTsX1rs5XxREqEw0lnYLiAdY2BokVh92rus4L9IJd1Sf/Woye6RBtF3mHfJMixL1KJCNDlzeFteoyXQWJBc0vu+ttb2s3Y+WlS096Q57eOcncyPHS5FAXEwzrCT+JOQvWkb/YdFRc3iIF68wiGUzq1E/QaKbc/eQDdn7UTJZdVcOSDVAKWr7AbVmtrBKdpUlGYFtp099ycAZrRs9Bg+5+2UANr9TvUeYftzt2UCHHQbCxGIF0Idj2Ezu/iWXHn6XuhQbMB/2LBKHYKMq7lQjtlG1+GeouJEgbsOlrlaf8th7Jh/8WAK20PD1aIDvnNj3PL0CGDJibGIDLj/ZVlMpzIHqqEC0yxSGyEMM3b6UgtmNCWP0kp+OGrrmOvgayMsLUKFNHLlAkLTengdk4jrCOdF1EUGeMbJLzNzKQbzcVpPMSfZ3ORoZv3IawWLBWextW32Hegyonk+UmAQHMd8Lrzr+Ib4wzv9WwrEodBdjXULJGysqyWSpNBRojcAXiWjajtXHhoHbOF9GujkENt+HPi8vpU/WkM7XE9V8t9x6Kx+oTAnMX5annhk1e5h9iIEIEAkN59VF7c8EHYB/nKK5d+Pi63Xlz17zrUN+/g/0mgvvLxE+i1URi27T85dMQb5EIUkJ4aKhDSHxLySjxK3vBEU3yojNdV3oOLMpJu9KGtdFQOl6jEOWCeABvFKzkC/Arrq8QB/3yo+RWO9MEliO6CsUhBf6T0dUr8ojFz/nDjIgFhXLPVK29FMp57jplZaZZOpP6l4V7dSc6AbBz/CVi98jtEZ8DAgVWTR4Z8dYwfBm5FS0ae/E4mZ3d1cHJ7N77LH9T1NYz2DA6dKlL6ymVgbIpe3Sqav8TP56EFPiAvRvngK3EoSWgWvq6b6rlUP7V1xuIeCdq63oMSVKBvHiIqYVvzIhLgG8euMBn1DN8UCvJfI+CakTKQDUJKbR7NyWmeqQx8rgcb5exdc6TPtLK+TcKdzE291EAhAO1hCRPGjwCP78DcjITah7UuRa9aPwC4lyj3tdLainMuMRkjW5q5hNpEpcucqdEjvofTq6TVFyPt5mGuH/b1U6m5XP6vEGmqAzjusnvpNkfSidlvarPgreNowgcEYdc+Ka1sLqOPAY9HFwWCDJNSD1IFWsok2Cu2cYpgAJ/gv3MJ1tKVnAd5WUIOkzmkm2WMaC8sMWxQMOJNxlrpLLpjtwL/8NKW4ni8Xms0TS+MAM7VLw4AvJfS5DHKdKSkf0YVH0s4elJSqvlnXxNgUJLtUCCzCaKCroqIoMFI6sWGrBKv6dQp9ReD9x16FyqYy2v0IRF5Jow3/lKQ4lT8xZbKmIRriWjIpjg1W+oNiKAnPjjaCWM4iqjHJvCmj4GznnkwDvITfY7Km3DqhXYfLy4chtzLvQfHu2EADG8ggKdjjQIyTKVRfuQtXGzDHmadwVu94guJBJRUMN5D5sJbCl8+h1RJ4WK5Xaj5a5PFnfypzmdi7GuLxxmrTqawqx9v65UXDxbty9EZUpuwCtIRrUClg8iF5ooMelLI6rhsWuEnqK7hLS8Pw1u+BG2elbR84tz8pfJT7ImkNfLNHibSuQaXPqbg5aOY1Uj0ROukwMhYKS75t0RJSeqRJBHRUPzD2L3lwno6ebvMZjiUIt0m6LmaXcp6Q0sZywhrkHgoqPnkkGsh44hBkjB+M49Yobd53CgADSarCnxmEZWmdrmO1piAZsLh1QhUlnx/yZ1wG+SWMAJP0ZBE0Eh97m2oUR7nPigch/RVtCatLJwE/PcEJRIxXnOOQVaKHopkuatbHhfd4bt/URfwT+/uvKPPxk8OOfigJ3fNFtv/CDLcsZuFxpxu45GSC1clL0jZ9oI/TyPP42BshGef5eDWseh6MpwHTAkP2wgTbme+qihOr7uAe88DnUcDTaCsQnSw]]></content>
<tags>
<tag>归档</tag>
</tags>
</entry>
<entry>
<title><![CDATA[深度学习进阶之路1.1|深度学习的介绍]]></title>
<url>%2F2018%2F11%2F14%2Fintroduction-to-deep-learning-1%2F</url>
<content type="text"><![CDATA[本文主要讲述深度学习的基本概念,依托于台湾大学李宏毅教授《一天搞懂深度学习》的逻辑框架。本篇是此系列的第一篇,对深度学习进行简单的介绍。 全部章节:深度学习的介绍训练深度学习网络的一些小技巧各种神经网络介绍深度学习的应用与展望 1 深度学习的介绍1.1 深度学习简介1.1.1 深度学习的常见应用 语音识别 图像识别 下围棋(Alpha Go) 对话系统 1.1.2 深度学习的目标机器学习的目标在于,寻找一个函数$f$,将输入数据映射到输出数据。例如:语音识别将一段音频的输入映射到对应的文字输出;图像识别将一个图片的输入映射到对应的类别输出;围棋系统将历史的对弈数据输入映射到下一步棋决策的输出;对话系统将上一句文本内容的输入映射到系统回答的输出。 而深度学习的目标在于,寻找一个框架,即一系列的函数模型$f_i$,利用训练数据进行拟合,再根据训练效果从中挑选出最优的模型。 1.1.3 深度学习的三个步骤 定义一组函数 模型和数据的拟合 选择最优函数 1.1.4 定义一组函数:神经网络 1. 神经网络的基本结构:神经元 人脑的一个神经元通常具有多个树突,用于接收传入的信息;这些树突连接着一条轴突,轴突尾端有许多轴突末梢,与其他多个神经元之间产生连接,从而传递信息。这个连接位置在生物学上称为突触。其行状结构如下: 类似的,神经元模型是一个包含输入、输出和计算功能的模型。其输入可以类比为生物神经元的树突,输出可以类比为生物神经元的轴突,计算则可以类比为细胞核。 下图是一个典型的神经元模型:包括3个输入,1个输出,两个计算功能。 当确定输入、权重、偏差的值以及激活函数的形式后,我们可以通过如上计算图计算出输出a。一个简单的例子如下: 2. 神经网络的概念 将不同的神经元连接起来形成的网络结构就是神经网络。需要注意的是,每个神经网络都可能拥有不同的权重和偏差值,且不同的连接方式也会导致不同的网络结构。权重和偏差都是神经网络的参数$\theta$。 3. 一种最简单的神经网络:完全连接前馈神经网络 前馈神经网络是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。完全连接前馈神经网络指的是各层神经元之间是全连接的。下图是一个简单的例子: 4. 层的性质 输入层和输出层通常只有一个,但隐含层可以有很多个。隐含层的个数体现了深度学习的“深度”。 TODO:ImageNet网络层深度介绍 对于分类问题,我们需要将输出层的输出映射到标签类别上。常见的一个做法是使用softmax函数作为输出层。它的基本原理是利用指数函数$e^x$,输出一个列表,保证所有数属于[0, 1]且和为1,从而表示该对象属于各个类别的概率。最后,我们选择概率数值最大的类别作为我们的预测标签。 5. 一个简单例子:手写数字识别 MNIST是深度学习入门的一个经典数据集,kaggle上提供了一个基于此数据集的训练项目Digit Recognizer。MNIST数据集主要是由一些手写数字图片所代表的像素值和图片相应的标签组成。图片一共有十类,分别对应0~9这10个阿拉伯数字。我们的目标是根据训练集中已有的图片像素属性和标签,对测试集中的图片样本的标签进行预测。下图是MNIST数据集中一个图片样本:一种可行的方法是,将$(28 \times 28)$个像素值矩阵拉长成一个$(784 \times 1)$维列向量作为输入层,经过一些隐含层后,与一个softmax输出层相连,输出一个$(10 \times 1)$的列向量,其中每个数值代表了该样本属于0~9中各个数字标签的概率。我们根据训练集中的真实标签反向求出各层网络各个神经元的最优参数$\theta$,并将训练得的网络模型应用在测试集上得出预测标签。 1.1.5 模型和数据的拟合:以MNIST为例1. 训练数据 图片的像素值矩阵与每张图片对应的标签。 2. 学习目标 对于训练数据,我们希望每个样本通过神经网络模型得出的概率列表中,真实标签拥有最大的概率值。也就是说,对于真实标签为3的样本,我们希望通过softmax得出的概率列表尽可能地接近$[0, 0, 1, 0, \dots]$。 我们将通过神经网络输出的概率向量与最优概率向量之间的差别定义为损失$l$。将所有样本的损失加和得总损失$L=\sum\limits_{k=1}^nl_k$,我们的目标为:找到一个函数,使得总损失$L$最小,也即找到一组参数$\theta$使得总损失函数$L$最小。 TODO: 损失函数的选择 1.1.6 选择最优函数1. 概述 其实我们总能列举所有的值,暴力搜索出最好的一组参数$\theta=\{w_1, w_2, \dots, b_1, b_2, \dots \}$。但是这种方法的效率极为低下,对于一个输入和输出均有1000个神经元的全连接网络层,我们就有$10^6$个参数需要拟合。因而在深度神经网络中,暴力搜索几乎是不可能的。 由于损失函数是我们自己定义的,我们总可以将其设置为凸函数或者近似凸函数,于是便可以利用运筹学的知识,提高我们的搜索效率,更快地找到全局最优解,或者退而求其次地找到可行且效果接近全局最优解的局部最优解。 梯度下降是神经网络模型训练中最常用的一种优化算法。 2. 梯度下降法 首先,选择权重矩阵$W$的初始值。我们直接采用随机定义,或者RBM预训练。 每次迭代的过程中,我们首先计算出当前状态的梯度,然后从当前状态向负梯度方向移动一个步长单位,达到新的状态。 W_{n+1} \leftarrow W_n - \eta \nabla L(W)直到当前梯度接近于0时,我们认为找到了一个局部最优解,并停止训练。 选取负梯度方向是因为这是梯度下降最快的方向,也即损失函数下降最快的方向。步长即“学习率”,是我们需要事先给定的超参数。学习率太小会导致训练过慢,学习率太高则可能越过最低点而导致更高的损失值。学习率可能是神经网络训练中最重要的超参数设定之一,在调参过程中,我们总是最先确定学习率的值,再确定其他参数。我们既可以选择常数学习率,也可以随着迭代次数的增加逐渐减小学习率,常用的做法有$1/\sqrt{k+1}, 1/\lVert W\rVert ^2$等。 TODO:梯度下降法介绍 以上算法中最消耗计算资源的便是每一次迭代中的求梯度过程。我们自然可以通过极限$\lim\limits_{h \to 0}[f(x+h)-f(x-h)]/2h$来近似求梯度。但是,当网络非常复杂、参数非常多时,每迭代一次都要重新计算非常多次损失函数的梯度,导致计算十分缓慢。一种比较好的改进方法是利用链式法则,用反向传播法求梯度。 3. 反向传播法 下面是cs231n关于理解反向传播法的一个小例子。具体笔记见链接。 1.2 为什么使用深层网络?首先,不是更多的参数就意味着更好的性能,一味地增加网络层数可能会导致更严重的过拟合,反而降低了泛化性能。而参数数量相同的情况下,更瘦更深的网络总是比浅而广的网络效果更好。因为使用诸如ReLU等非线性单元的神经网络在数学上相当于一个分片线性函数,线性区域越多,神经网络的非线性性越强,就有可能取得更好的效果。这就像折纸,越深的网络将纸对折越多次,得到的线性区域也越多。这也是为什么我们称之为“深度学习”而非“广度学习”。[参考链接1] [参考链接2] TODO:模块化 1.3 深度学习简单实战1. 定义一组函数 12345678910111213141516# 建立模型print('#################### Define Model ##########################')model = Sequential()model.add(Conv2D(filters=32, kernel_size=(5, 5), activation='relu', input_shape=(28, 28, 1)))model.add(Conv2D(filters=32, kernel_size=(5, 5), activation='relu'))model.add(MaxPool2D(pool_size=(2, 2)))model.add(Dropout(0.25))model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))model.add(Conv2D(filters=64, kernel_size=(3, 3), activation='relu'))model.add(MaxPool2D(pool_size=(2, 2), strides=(2, 2)))model.add(Dropout(0.25))model.add(Flatten())model.add(Dense(256, activation="relu"))model.add(Dropout(0.5))model.add(Dense(10, activation="softmax"))model.summary() 2. 模型和数据的拟合 1loss='categorical_crossentropy' 3. 选择最优函数 12345# 配置模型optimizer = RMSprop(lr=0.001, rho=0.9, epsilon=1e-8, decay=0)model.compile(loss='categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])# 拟合模型:找到最优参数history = model.fit(x_train, y_train, batch_size=batch_size, epochs=nb_epochs, validation_data=(x_val, y_val), callbacks=[checkpoint], verbose=2) TODO:MNIST手写识别]]></content>
<tags>
<tag>深度学习</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第140题|快速幂 [中等]]]></title>
<url>%2F2018%2F10%2F25%2FLintCode-0140-fast-power%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述计算$a^n \% b$,其中$a$,$b$和$n$都是32位的非负整数。样例例如 $2^{31} \% 3 = 2$例如 $100^{1000} \% 1000 = 0$挑战$O(\log{n})$原题链接 2. 解题思路3. 参考代码1234567891011121314151617class Solution: """ @param a: A 32bit integer @param b: A 32bit integer @param n: A 32bit integer @return: An integer """ def fastPower(self, a, b, n): if n == 0: return 1 % b ans = 1 while n > 0: if n % 2 == 1: ans = ans * a % b a = a * a % b n = n // 2 return ans % b]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第371题|用递归打印数字 [中等]]]></title>
<url>%2F2018%2F10%2F25%2FLintCode-0371-print-numbers-by-recursion%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述用递归的方法找到从1到最大的N位整数。样例给出 N = 1, 返回 [1,2,3,4,5,6,7,8,9].给出 N = 2, 返回 [1,2,3,4,5,6,7,8,9,10,11,...,99].挑战用递归完成,而非循环的方式。原题链接 2. 解题思路每次调用递归获取1到最大的N-1位整数,并添加$[10^{n-1},10^n)$这一区间的数。 3. 参考代码1234567891011121314class Solution: """ @param n: An integer @return: An array storing 1 to the largest number with n digits. """ def numbersByRecursion(self, n): if n == 0: return [] if n == 1: return list(range(1,10)) else: old_arr = self.numbersByRecursion(n-1) add_arr = list(range(10**(n-1),10**n)) return old_arr + add_arr]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第245题|子树 [中等]]]></title>
<url>%2F2018%2F10%2F25%2FLintCode-0245-subtree%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述有两个不同大小的二叉树: T1 有上百万的节点; T2有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。样例下面的例子中 T2 是 T1 的子树:T1 = T2 = 2 3 / \ / 1 3 4 / 4下面的例子中 T2 不是 T1 的子树:T1 = T2 = 2 3 / \ \ 1 3 4 / 4原题链接 2. 解题思路思路1由于前序遍历和中序遍历可以唯一确定一棵树,因而我们可以先计算两棵树的前序遍历序列P1、P2,若P2不在P1内,返回False;否则,计算两棵树的中序遍历I1、I2,若I2不在I1内,返回False,否则返回True。 思路2使用递归,首先判断T2是否与T1是相同树,若是,返回True;否则,递归判断T2是否为T1左子树或右子树的子树。 3. 参考代码123456789101112131415161718192021222324252627282930313233"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""class Solution: """ @param T1: The roots of binary tree T1. @param T2: The roots of binary tree T2. @return: True if T2 is a subtree of T1, or false. """ def isSubtree(self, T1, T2): if T1 is not None and T2 is None: return True elif T1 is None and T2 is not None: return False elif self.isSameTree(T1,T2): return True else: return self.isSubtree(T1.left, T2) or self.isSubtree(T1.right, T2) def isSameTree(self, T1, T2): if T1 is None and T2 is None: return True elif (T1 is None and T2 is not None) or (T1 is not None and T2 is None): return False elif T1.val != T2.val: return False else: return self.isSameTree(T1.left, T2.left) and self.isSameTree(T1.right, T2.right)]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第174题|删除链表中倒数第n个节点 [简单]]]></title>
<url>%2F2018%2F10%2F09%2FLintCode-0174-remove-nth-node-from-end-of-list%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述给定一个链表,删除链表中倒数第n个节点,返回链表的头节点。链表中的节点个数大于等于n样例给出链表1->2->3->4->5->null和 n = 2.删除倒数第二个节点之后,这个链表将变成1->2->3->5->null.挑战O(n)时间复杂度原题链接 2. 解题思路使用两个指针,其中一个指针先沿着链表走n步,另一个指针从head后退一步,于是两者间差n+1步。直到head走至null时,tmp指向该删节点的前一个节点,令tmp.next = tmp.next.next,即删除了该删节点。将tmp节点从head后退一步的原因是应对出现该删节点位置恰为队首,tmp向前n+1步需要指向空的情况。 3. 参考代码123456789101112131415161718192021222324"""Definition of ListNodeclass ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next"""class Solution: """ @param head: The first node of linked list. @param n: An integer @return: The head of linked list. """ def removeNthFromEnd(self, head, n): res = ListNode(0, next=head) tmp = res for i in range(n): head = head.next while(head is not None): head = head.next tmp = tmp.next tmp.next = tmp.next.next return res.next]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[Convolutional Neural Networks for Visual Recognition|李飞飞]]></title>
<url>%2F2018%2F09%2F28%2Fvideo-cs231n-%E6%9D%8E%E9%A3%9E%E9%A3%9E%2F</url>
<content type="text"><![CDATA[Lecture 1: Course Introduction [slice]1.1 Computer vision overview Related Courses @ Stanford CS131: Undergraduate introductory class cs224n: intersection of deep learning and natural language processing cs231a: more emcompassing cs231n: algorithms and applications, CNN 1.2 Historical context if object recognition is too hard, do object segmentation firstly. SIFT & object recognition: use critical features to represent the whole object, and caculate two objects’ similarity. PASCAL Visual Object Challenge 1.3 Course logistics Lecture 2: Image Classification2.1 The data-driven approachThe Problem: Semantic Gap像素值构成的数值矩阵与标签语义间的差别。稍微移动一下相机,标签不变,但像素值矩阵变化十分巨大,要求算法具有鲁棒性。 解决方法1:基于规则计算图形边缘,并对每部分进行分类,如三条线交于一点可能是猫耳朵。123def classify_image(image): return class_label 存在问题: 容易出错 难以迁移到其他学习,例如狗、卡车等。 解决方法2:数据驱动(Data-Driven Approach) Collect a dataset of images and labels Use Machine Learning to train a classifier Evaluate the classifier on new images1234567def train(images, labels): # Machine learning return modeldef predict(model, test_images): # Use model to predict labels return test_labels First classifier: Nearest Neighbour使用训练集中最像的image的label作为test集中需要预测的image的label使用L1距离表示两张图片的相似度 Example Dataset: CIFAR10 源代码:Complexity: train O(1), predict O(N) Problem 1: 我们希望训练过程相对复杂而预测过程比较简单解决办法:使用CNN等其他算法 problem 2: 由于离群点或噪声的存在,预测可能不准解决办法:使用KNN(平滑边界) 2.2 K-nearest neighbor [notes]L1距离和L2距离的差别:L1距离取决于坐标系,而L2距离与坐标系无关。如果特征向量有明确的意义,用L1距离或许会更好;若特征向量只是某个空间中的一个通用向量,我们并不知道其意义,用L2距离或许会更好。交叉验证更适用于较小的数据集,在深度学习中不常用。 KNN问题: 不适用于图像处理 维度灾难(the curse of dimensionality):随着特征维度增加,训练成本指数级增加。(维度高时,若想准确分类,需要更多的样本,否则样本在空间内分布稀疏) 2.3 Linear classification I [notes]问题1:对于某一种类别只会学习出单一的平均的模板,而对于图像而言,训练集常出现的是某个标准图像的各种变体,例如车的正面侧面,使得训练出的模板W变得似乎四不像。解决方法:使用神经网络或者其他更为复杂的模型,不局限于仅仅学习一个模板(model)。问题2:低维空间的线性不可分问题 Lecture 3: Loss Functions and Optimization3.1 Linear classification II通过损失函数Loss Function来确定较好的$W$。 Given an example $(x_i,y_i)$, where $x_i$ is the image and $y_i$ is the (integer) label. The scores vector is $s=f(x_i,W)$Loss over the dataset is a sum of loss over examples: W=argmin L=argmin \frac{1}{N}\sum L_i(f(x_i,W),y_i)The SVM loss has the form:\begin{align}L_i &= \sum\limits_{j\neq y_i} \begin{cases} 0, &\text{if $s_{y_i}\geq s_j+1$}\\ s_j-s_{y_i}+1, &\text{otherwise} \end{cases}\\ &=\sum\limits_{j\neq y_i}max(0,s_j-s_{y_i}+1)\end{align} ——"Hinge loss" 对于所有错误的分类,比较正确分类的分数和错误分类的分数,如果正确分类的分数比错误分类的分数高出某个安全边界(此处设为1),则损失设为0,否则设为两者之差。threshold为1类似于SVM中的支持向量,无论设为多少,都是同时增大或减少。Example: Q1: What happens to loss if car scores change a bit?A1: 由于car的分数比其他类别高出许多,所以即使图像稍微变动一点,Loss Function依然会是0。因而这个模型比较具有鲁棒性。 Q2: what is the min/max possible loss?A2: 根据Hinge loss,最大可能值为0,最小可能值为负无穷。 Q3: At initialization W is small so all s ≈ 0. What is the loss?A3: $L_i = \sum\limits_{j\neq y_i}1=N-1$ Q4: What if the sum was over all classes? (including j = y_i)A4: 结果+1 Q5: What if we used mean instead of sum?A5: 损失函数缩小常数倍,结果不影响。 Q6: What if we used $L_i=\sum\limits_{j\neq y_i}max(0,s_j-s_{y_i}+1)^2$?A6: 损失函数进行了非线性变换,结果会产生影响。 123456def L_i_vectorized(x,y,W): scores = W.dot(x) margins = np.maximum(0, scores - scores[y] + 1) margins[y] = 0 loss_i = np.sum(margins) return loss_i Q7: Suppose that we found a W such that L = 0. Is this W unique?A7: Not unique. For any constant c$\neq$0,cW also satisfies. 避免过拟合,加入正则项,选择更简单的W。L1偏向于更稀疏,L2偏向于所有数字更小。 3.2 Higher-level representations, image featuresSoftmax Classifier(Multinomial Logistic Regression)对于SVM模型,我们并没有指定scores的内在含义,而对于Softmax loss,scores表示概率。我们希望真实标签的概率越大且接近1。Example: Q1: What is the min/max possible loss L_i?A1: 最大0,最小负无穷。 Q2: Usually at initialization W is small ao all s ≈ 0. What is the loss?A2: $\log{N}$ SVM & Softmax对比: Conclusion: 3.3 Optimization, stochastic gradient descentStrategy 1. random search Strategy 2. Follow the slope(gradient descent) finite difference: Calculus Problem: 当N,即样本量很大时,每次迭代每个变量的梯度会使得计算十分复杂。此时经常采用随机梯度下降法。Stochastic Gradient Descent其中256是一个minibatch,总是使用形如$2^n$作为minibatch。 [并没有听懂] Lecture 4: Introduction to Neural Networks4.1 Backpropagationcomputational graphs express a function using a computational graph use Backpropagation to compute gradient(recursively use the chain rule) 4.2 Multi-layer PerceptronsExamples:当某个较为复杂的部分可以计算梯度时,可以选择用一个节点去替代它,如上图例二中的sigmoid函数。 add: 按本身值分配max: 分配给最大值,其余节点为0multiply: 按另一个节点的值分配给当前节点 Always check: The gradient with respect to a variable should have the same shape as the variable. Codes: 4.3 The neural viewpointCode: 神经网络的工作原理: Activation functions: Lecture 5: Convolutional Neural Networks5.1 History CNN需要训练卷积层,卷积层能够更好地保留输入的空间结构 5.2 Convolution and poolingFully Connected Layer: Convolution Layer将卷积核和原层对应部分做点乘再相加。[32323]x[553] —> [28281]使用不同的卷积核,可以得到多个activation maps Example: output size: (N - F) / stride + 1Common to zero pad the border: (N + pad_N * 2 - F) / stride + 1零填充的原因:保证全尺寸输出 —> stride=1时,填充(F-1)/2 Examples:Input volume: [32323]filters: 10 [553] with stride1, pad 2Q1: What’s the output volume size?output size = (32+22-5)/1+1=32so, output volume size = 323210Q2: Number of parameters in this layer?Each filter has 553+1=76 params, one for bias,so total number of parameters is 7610=760 summary: Example: CONV layers in Torch and Caffe 5.3 ConvNets outside visionPooling: 池化目的:降维,减少参数数量;深度不减example: [22422464] —> [11211264]max polling 可以表示当前卷积核所在位置的最大受激活程度一般不在池化层填0,因为池化层一般只做降采样最后添加一个全连接层和朴素的神经网络相连 demo: http://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html Lecture 6: Training Neural Networks, part I6.1 Activation functions 1. 画computional graphs函数:$f=Wx$hinge loss: $L_i=\sum\limits_{j\neq y_i}max(0,s_j-s_{y_i}+1)penalty: $R(W)$2. 关于$f$Neural NetworksLinear score function: $f=Wx$2-layer Neural Network: $f=W_2max(0,W_1x)$包含若干个线性层,层与层之间通过非线性函数连接实现层的堆叠3. 一种特殊的神经网络—CNN使用卷积层保持输入的空间结构,卷积层是一个权重滤波器,每个权重输出一个激活图,重复产生多个激活图4. 通过优化来选择权重W向负梯度方向更新 mini-batch SGDLoop:Sample a batch of dataForward prop it through the graph (network), get lossBackprop to calculate the gradientsUpdate the parameters using the gradient5. 训练神经网络 One time setupactivation functions, preprocessing, weight initialization, regularization, gradient checking Training dynamicsbabysitting the learning process, parameter updates, hyperparameter optimization Evaluationmodel ensembles 6.1.1 Sigmoid将数字压缩到(0,1)问题: 当X是很大的正数或很大的负数时,值会很接近1或0,此时更新梯度变化很小,导致梯度消失 Sigmoid函数的输出不是零中心的,若初始X全为正,梯度也会全为正,这样梯度只会朝向一三象限。 exp()计算代价较高 6.1.2 tanh将数字压缩到[-1,1]优点:零中心缺点:当X是很大的正数或很大的负数时,值会很接近1或0,此时更新梯度变化很小,导致梯度消失 6.1.2 ReLU$f(x)=max(0,x)$优点:在正轴上不会饱和;计算快;收敛地更快;更具备生物合理性(实证检验)缺点:不是零中心,对于负半轴会出现梯度消失于是人们总喜欢用一些较小的正偏置项来初始化ReLU 6.1.3 Leaky ReLU$f(x)=max(0.01x,x)$存在负斜率,在负半轴结果也较好,不会存在梯度消失情况 6.1.4 PReLU(Parametric)$f(x)=max(\alpha x,x)$将$\alpha$设置为一个超参数,通过学习得到,增加了灵活性 6.1.5 Exponential Linear Units(ELU)$f(x) = \begin{cases} 0, &\text{if $x>0$}\\ \alpha (exp(x)-1), &\text{if $x\leq 0$} \end{cases}$使得均值更接近于0,但是使得负半轴的非系统偏差更容易被保留缺点:exp()计算复杂 6.1.6 Maxout “Neuron”$f(x)=max(x_1^Tx+b_1,x_2^Tx+b_2)$问题:参数个数加倍 TLDR: In practice: Use ReLU. Be careful with your learning rates Try out Leaky ReLU / Maxout / ELU Try out tanh but don’t expect much Don’t use sigmoid 6.2 Data Preprocessing对数据-样本均值,变成零中心数据,这样在第一层输入解决了零均值问题,然而在之后的层中,非零均值的问题更加严重了,所以还是没有解决sigmiod的问题。 6.3 Weight InitializationFirst idea: W=np.random.randn(fan_in,fan_out)*0.01每一层均值基本为0,方差越来越小问题:最后所有激活值都变成了0 Second Idea: np.random.randn(fan_in,fan_out)*1.0 如果改变初始化比例的大小,将0.01改成1.0,则W中的数总是过大,导致模型总是处于饱和状态(趋于+1/-1),从而使得所有的梯度趋于0而不再更新 Third Idea: “Xavier initialization”W=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in)即单位高斯权值问题:如果使用ReLU,由于将一半的数调整为了0,方差也减小了一半,于是数据又会趋向于0 Fourth Idea: note additional /2W=np.random.randn(fan_in,fan_out)/np.sqrt(fan_in/2) 6.4 batch normalization对每层输入的X做归一化目的:为了避免饱和问题:是否必要?解决:控制饱和程度,在归一化之后,有时通过缩放恢复原函数并做一个小的扰动 好处:改善了梯度流,更加robust 6.5 Babysitting the Learning Process Preprocess the data: zero-centered/normalized choose the architecture: hyperparameters of hidden layer neurons initialize the network, make sure the loss is reasonable(sanity check): 当权重很小,分布很分散时,归一化指数分类器的损失将是$-\log 1/N$ 加入正则项 从小的trainset开始训练,测试模型正确性,去掉正则项,查看权重是否逐渐降为0,准确度逐渐升至1 加入小的正则项,确定learning rate [1e-5,1e-3] 6.6 Hyperparameter Optimizationcross-validation strategyrandom search vs grid search好的learning rate 应该类似于loss先急剧下降,再缓慢下降 Lecture 7: Training Neural Networks, part IIRecall:Weight Initialization: 权重过大则爆炸式增长,权重过小则梯度消失,使用Xaiver对于越深的网络,权重初始化越重要,因为后续的过程中会不断的乘以那些矩阵归一化: 使得数据对参数扰动的变化没有那么明显,比较robust 7.1 Fancier optimization7.1.1: SGD每次向负梯度方向更新$x_{t+1}=x_t-\alpha *\nabla f(x_t)$123while True: dx = compute_gradient(x) x += learning_rate * dx Problem 1: 损失函数在某些方向非常敏感,而在某些方向天然地不敏感 Problem 2: if the loss function has a local minima or saddle point, since there’s zero gradient, gradient descent gets stuck对于低维情况,似乎local minima问题更严重,但对于高维情况,saddle point相对来说更常见 Problem 3: our gradients come from minibatches so they can be noisy. 当前点对梯度的估计由于参数的随机性等包含了较大的噪声 7.1.2: SGD+Momentum想法类似于一个小球滚落,当经过局部最优点或者鞍点的时候,由于速度为0,则会停止在当前点,但如果给了一个速度,可能能越过局部最小点,鞍点处更容易突破;同时,由于保留了上次的速度方向,曲折回合的更新趋势会有所抵消,使得梯度能更快地收敛到最优解$v_{t+1}=\rho v_t+\nabla f(x_t)$$x_{t+1}=x_t-\alpha v_{t+1}$12345vx = 0while True: dx = compute_gradient(x) vx = rho * vx + dx x += learning_rate * dx 7.1.3 Nesterov$v_{t+1}=\rho v_t-\alpha\nabla f(x_t+\rho v_t)$$x_{t+1}=x_t + v_{t+1}$$\Rightarrow$$v_{t+1}=\rho v_t-\alpha\nabla f(\tilde{x}_t)$$\tilde{x}_{t+1}=\tilde{x}_t-\rho v_t+(1+\rho)v_{t+1}=\tilde{x}_t+v_{t+1}+\rho(v_{t+1}-v_t)$12345vx = 0while True: dx = compute_gradient(x) vx = rho * vx + dx x += learning_rate * dx 7.1.4 AdaGrad12345grad_squared = 0while True: dx = compute_gradient(x) grad_squared += dx * dx x -= learning_rate * dx / (np.sqrt(grad_squared) + 1e-7) 对于小梯度,除的数也较小,使得学习速率相当于变大;反之,对于大梯度,除的数也较大,使得学习速率相当于变小。Problem: 随着时间增长,grad_squared会逐渐累积,使得最后步长会越来越小,接近于0,在凸函数的情况下表现很好,非凸问题会困于局部最优点 7.1.5 RMDProp12345grad_squared = 0while True: dx = compute_gradient(x) grad_squared = decay_rate & grad_squared + (1 - decay_rate) * dx * dx x -= learning_rate * dx / (np.sqrt(grad_squared) + 1e-7) 梯度平方按照一定比例下降,好处在于步长最后趋近于0被修正了,坏处在于训练会越来越慢 7.1.6: Adam(almost)将以上动量和除平方方法结合起来1234567first_moment = 0second_moment = 0while True: dx = compute_gradient(x) first_moment = beta1 * first_moment + (1 - beta1) * dx # Momentum second_moment = beta2 * second_moment + (1 - beta2) * dx * dx # AdaGrad/RMSProp x -= learning_rate * first_moment / (np.sqrt(second_moment) + 1e-7) Problem: 第一步时second_moment仍然接近0,处以其根号,得很大的值,即开始时步长非常大 7.1.7: Adam(full form)123456789first_moment = 0second_moment = 0for t in range(num_iterations): dx = compute_gradient(x) first_moment = beta1 * first_moment + (1 - beta1) * dx # Momentum second_moment = beta2 * second_moment + (1 - beta2) * dx * dx # AdaGrad/RMSProp first_unbias = first_moment / (1 - beta ** t) # Bias correction second_unbias = second_moment / (1 - beta2 ** t) # Bias correction x -= learning_rate * first_unbias / (np.sqrt(second_unbias) + 1e-7) # AdaGrad/RMSProp Adam 效果总是非常好,总是首选使用。默认设置beta1=0.9, beta2=0.999, learning_rate=1e-3 or 5e-4 选择一个好的learning ratewe can let learning rate decay over timeexponential decay: $\alpha=\alpha_0e^{-kt}$1/t decay: $\alpha = \alpha_0/(1+kt)$ 7.1.8 Newton method$\theta^*=\theta_0-H^{-1}\nabla_{\theta}J(\theta_0)$使用二阶逼近,没有使用learning_rate,现实中可能使用learning_rateProblem: 需要求Hessian matrix,对于深度学习有些不切实际Quasi-Newton methods: 不求矩阵的逆,用低阶逼近 7.2 Model EnsemblesIdea 1: 独立学习多个学习器,最后组合到一起,例如求平均,最大最小等,可以减少过拟合,达到小但固定的提升 Idea 2: Tips & TricksInstead of using actual parameter vector, keep a moving average of the parameter vector and use thatat test time (Polyak averaging)123456while True: data_batch = dataset.sample_data_batch() loss = network.forward(data_batch) dx = network.backward() x -= learning_rate * dx x_test = 0.005 * x_test + 0.005 * x 7.3 Regulation用于提升单个学习器的表现Idea 1: L1, L2, Elastic Idea 2: 对于NN:Dropout即在正向传播过程中,对于每层激活函数随机选取一些神经元置零,一般使用在全连接层。测试时引入Dropout不好,会改变预测结果,考虑对训练的不同情况做平均Inverted Dropout: test时消除了p,测试时更加高效 Idea 3: Batch Normalization使用最多 Idea 4: Data augmentation将原始数据做一定的变换,标签不变。例如对于原始图像,随机地加个滤镜或者翻转旋转或者局部裁剪,标签仍设为猫,增加样本数 Idea 5: DropConnect即在正向传播过程中,对于每层权重矩阵置零 Idea 6: fractional max pooling Idea 7: Stochastic Depth随机消除一些层,直接连向下一层 7.4 Transfer Learning处理过拟合问题,一种方法是使用正则化,一种方法是使用迁移学习 在一个已知的大训练集上训练的一个较好的模型,如Imagenet 对于小的数据集,对不需要的类别的权重进行固定,训练那些需要的类别对应的权重。例如Imagenet中有3000类,需要进行10种狗的训练,W=[409610]-d,则将另外[40962990]-d固定。 对于更大的数据集,可能只需要微调,所以对于这个问题,将learning_rate调低,再次训练即可。 Lecture 8: Deep Learning SoftwareComputational GraphsNumpy VS TensorFlow VS PyTorch TensorFlow: Neural NetworkRunning example: Train a two-layer ReLU network on random data with L2 loss1234567891011121314151617181920212223242526272829303132333435import numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltN, D, H = 64, 1000, 100x = tf.placeholder(tf.float32, shape=(N, D))y = tf.placeholder(tf.float32, shape=(N, D))w1 = tf.placeholder(tf.float32, shape=(D, H))w2 = tf.placeholder(tf.float32, shape=(H, D))h = tf.maximum(tf.matmul(x, w1), 0)y_pred = tf.matmul(h, w2)diff = y_pred - yloss = tf.reduce_mean(tf.reduce_sum(diff ** 2, axis=1))grad_w1, grad_w2 = tf.gradients(loss, [w1, w2])with tf.Session() as sess: values = { x: np.random.randn(N, D), w1: np.random.randn(D, H), w2: np.random.randn(H, D), y: np.random.randn(N, D), } learning_rate = 1e-5 t_list = [] loss_val_list = [] for t in range(50): out = sess.run([loss, grad_w1, grad_w2], feed_dict=values) loss_val, grad_w1_val, grad_w2_val = out values[w1] -= learning_rate * grad_w1_val values[w2] -= learning_rate * grad_w2_val t_list.append(t) loss_val_list.append(loss_val) plt.scatter(t_list, loss_val_list) plt.show() result: 问题1:权重矩阵每次都在TensorFlow和Numpy中复制,导致资源浪费解决方案:将placeholder改为Variable1234567891011121314151617181920212223242526272829303132333435363738import numpy as npimport tensorflow as tfimport matplotlib.pyplot as pltN, D, H = 64, 1000, 100x = tf.placeholder(tf.float32, shape=(N, D))y = tf.placeholder(tf.float32, shape=(N, D))# Change w1 and w2 from placeholder to Variablew1 = tf.Variable(tf.random_normal((D, H)))w2 = tf.Variable(tf.random_normal((H, D)))h = tf.maximum(tf.matmul(x, w1), 0)y_pred = tf.matmul(h, w2)diff = y_pred - yloss = tf.reduce_mean(tf.reduce_sum(diff ** 2, axis=1))grad_w1, grad_w2 = tf.gradients(loss, [w1, w2])# update w1 and w2 as part of the graphlearning_rate = 1e-5new_w1 = w1.assign(w1 - learning_rate * grad_w1)new_w2 = w2.assign(w2 - learning_rate * grad_w2)updates = tf.group(new_w1, new_w2)with tf.Session() as sess: sess.run(tf.global_variables_initializer()) values = { x: np.random.randn(N, D), y: np.random.randn(N, D), } t_list = [] loss_val_list = [] for t in range(50): loss_val, _ = sess.run([loss, updates], feed_dict=values) t_list.append(t) loss_val_list.append(loss_val) plt.scatter(t_list, loss_val_list) plt.show() result: PytorchComputational Graphs: static vs dynamic 静态在后续可以多次更新,寻找最优值 (static) 一旦建立好,可以序列化,不需要每次都重新建立 (static) 有时可以让代码更简洁(dynamic)TensorFlow: static; PyTorch: dynamic Dynamic Graph Applications Recurrent Networks Recursive Networks Modular Networks CaffeLecture 9: CNN ArchitecturesAlexNetVGGGoogLeNetResNetLecture 10: RNNLecture 11: Applications11.1 分割Semantic Segmentation Idea: Fully ConvolutionalSemantic Segmentation Idea: Fully Convolutional]]></content>
<categories>
<category>学习笔记</category>
</categories>
<tags>
<tag>深度学习</tag>
</tags>
</entry>
<entry>
<title><![CDATA[机器学习训练营|任务清单]]></title>
<url>%2F2018%2F09%2F23%2Ftraining-camp-machine-learning-task-list%2F</url>
<content type="text"><![CDATA[第一阶段 08.16-08.26 LR √08.16 √ 语音直播:机器学习的应用及理论分类 [附件] 08.17 √ 视频直播:达观杯文本智能处理赛解析 任务1:理解已给的比赛代码,即每一行代码是干什么用的 08.18-08.20 √ 任务1:西瓜书3.1/3.2/3.3章节学习 作业1:描述对数几率回归算法的过程 08.21-08.22 √ 任务1:西瓜书3.3节的一个扩展内容:softmax回归和3.6节学习 [参考链接] 08.19-08.26 √ 作业1:比赛提交 作业2:LogisticRegression 的 parameters 的每个参数的意义 第二阶段 08.28-09.11 SVM&NB ×08.28-08.30 √ 任务1:西瓜书7.3/7.1/7.2章节学习 08.31-09.01 × 任务1:实验-sklearn-user guide 1.9 [参考链接] 09.02-09.03 √ 任务1:西瓜书6.1/6.2/6.3 视频直播:达观杯之文本分类任务解析与代码使用 [附件] 09.04-09.06 √ 任务1:西瓜书6.4/6.5 09.07-09.09 × 任务1:实验-sklearn-user guide 1.4 [参考链接] 08.28-09.11 × 作业1:描述SVC算法过程 作业2:描述朴素贝叶斯算法过程 作业3:用朴素贝叶斯或SVM算法做比赛,看能否取得更好的效果 × 第三阶段 09.12-09.25 DT&ensemble09.12-09.14 × 任务1:西瓜书4.1/4.2/4.3/4.4章节学习 × [差4.4] 作业1:用决策树算法做比赛,看看能否取得更好的效果 09.15-09.16 × 任务1:实验-sklearn-user guide 1.10 [参考链接] 09.18-09.21 × 任务1:西瓜书第八章所有内容 × 作业1:用集成学习的思想,及融合多个模型来做比赛,看能否取得更好效果 × 09.22-09.23 × 任务1:实验-sklearn-user guide 1.11 [参考链接]]]></content>
<tags>
<tag>机器学习</tag>
</tags>
</entry>
<entry>
<title><![CDATA[机器学习|周志华]]></title>
<url>%2F2018%2F09%2F21%2Fbook-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%91%A8%E5%BF%97%E5%8D%8E%2F</url>
<content type="text"><![CDATA[第8章 集成学习8.1 个体与集成集成学习的一般结构是:先产生一组“个体学习器”(individual learner),再用某种策略把他们结合起来。 若集成中只包含同种类型的个体学习器,如“决策树集成”中全是决策树,这样的集成是同质的(homogeneous)。同质集成中的个体学习器也称为“基学习器”(base learner),相应的学习算法称为“基学习算法”(base learning algorithm)。 若集成中包含不同类型的个体学习器,如同时包含决策树和神经网络,这样的集成式异质的(heterogeneous)。异质集成中的个体学习器也称为“组件学习器”(component learner)或个体学习器。 要想获得好的集成,个体学习器应“好而不同”,即个体学习器要有一定的“准确性”(学习器不能太坏),并且要有“多样性”(学习期间要有差异)。至少需要使用弱学习器,即泛化性能高于随即猜测的学习器,例如二分类问题精度高于50%。 考虑分类问题$y \in \{-1, +1\}$和真实函数$f$,假定基分类器的错误率为$\epsilon$,即对每个基分类器$h_i$有: P(h_i(x) \neq f(x)) = \epsilon \tag{8.1}假设集成通过简单投票法结合$T$个基分类器,若有超过半数的基分类器正确,则判定集成分类为正确,则: H(x) = sign(\sum\limits_{i=1}^{T}h_i(x)) \tag{8.2}假设基分类器的错误率相对独立,则由Hoeffding不等式可知,集成的错误率为:\begin{align}P(H(x) \neq f(x)) & = \sum\limits_{k=0}^{\left \lfloor T/2 \right \rfloor} \tbinom{T}{k} (1 - \epsilon)^k \epsilon ^{T-k} \\& \leq exp(-\frac{1}{2} T(1-2\epsilon)^2) \tag{8.3}\end{align}结论:随着集成分类器数目$T$的增大,集成的错误率将指数级下降,最后趋向于零。 根据个体学习器的生成方式,目前的集成学习方法大致可以分类两类:一类是个体学习器间存在强依赖关系,必须串行生成的序列化方法,代表是Boosting;另一类是个体学习器间不存在强依赖关系,可同时生成的化方并行化方法,代表是Bagging和随机森林。 8.2 BoostingBoosting族算法的工作机制类似于:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本在后续受到更多关注,然后基于调整后的样本分布来训练下一个基学习器;如此重复进行,直到基学习器数目达到事先指定的值$T$,最终将这$T$个基学习器进行加权融合。]]></content>
<tags>
<tag>机器学习</tag>
</tags>
</entry>
<entry>
<title><![CDATA[python编程:从入门到实践|笔记]]></title>
<url>%2F2018%2F09%2F20%2Fbook-python%E7%BC%96%E7%A8%8B-%E4%BB%8E%E5%85%A5%E9%97%A8%E5%88%B0%E5%AE%9E%E8%B7%B5-EricMatthes-%E8%A2%81%E5%9B%BD%E5%BF%A0%2F</url>
<content type="text"><![CDATA[第2章 变量和简单数据类型2.1 运行 hello_world.py 时发生的情况2.2 变量的命名和使用 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,不能以数字打头。 变量名不能包含空格,但可使用下划线来分割其中的单词。 不要将python关键字和函数名用作变量名。 变量名应既简短又具有描述性。 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。 2.3 字符串2.3.1 使用方法修改字符串的大小写 str.title():首字母大写 str.upper():全部大写 str.lower():全部小写 2.3.2 合并(拼接)字符串 例:”hello” + “ “ + “world” 2.3.3 使用制表符或换行符来添加空白 例:print(“\tpython”) 例:print(“python\n”)]]></content>
<tags>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[韩语发音第1课|什么是韩文?한글은 무엇인가?]]></title>
<url>%2F2018%2F09%2F19%2Fvideo-Learn-Korean-lesson-001%2F</url>
<content type="text"><![CDATA[韩国文字被称为韩文(한글,hangul),是一种表音文字。(汉语是表意文字) “한글”这个名称中“한”为韩语固有词“大”的意思,“글”为韩语固有词“字”的意思,“한글”意为“大字”或“伟大的文字”。 下一篇:韩语发音第2课|单母音 ㅏㅓㅗㅜㅡㅣㅐㅔㅚㅟ 1.1 韩文的创造背景 韩国古代使用汉字表记,导致文言分离。古代唯贵族可习汉文,因此平民多文盲。 朝鲜王朝第四代王“世宗大王”深感汉字对于文化传播的不便,迫切需要完整表达本国语音的文字,所以组织发明韩文字母한글,于正统八年(1443)颁定《训民正音》。 国之语音异乎中国 与文字不相流通 故愚民有所欲言而终不得伸其情者多矣 予为此惘然 新制二十八字 预使人易习使于日用矣 —— 《训民正音》 1.2 训民正音的造字原理 当时共有28个字母,现在共有40个字母。 母音(元音)21个,子音(辅音)19个。 母音利用天地人的形象创造出来。 天·天圆 ·地·地平 ㅡ人·人直 ㅣ衍生出ㅏㅓㅗㅜㅑㅕㅛㅠ等 基本子音ㄱㄴㅅㅁㅇ是根据人的发音器官的模样创造出来的。 牙音ㄱ(像人的牙根):衍生出ㅋ舌音ㄴ(像人的舌头):衍生出ㄷ齿音ㅅ(像牙齿的侧面):衍生出ㅈㅊ唇音ㅁ(像人的嘴唇):衍生出ㅂㅍ喉音ㅠ(像人的喉咙):衍生出ㅎ 1.3 韩文的结构 子音(辅音) + 母音(元音) [左右] ha —> ㅎ+ㅏ哈 —> 하 子音(辅音) + 母音(元音) + 韵尾(子音) [左右下] han —> ㅎ+ㅏ+ㄴ韩 —> 한 1.4 韩语的词汇 韩语词汇分为汉字词(70%),固有词(20%),外来词(10%)三个部分。 汉字词:源于汉字,后被融入韩国语词汇体系中,发音于汉字发音相似。 例:사회(社会) 학교(学校) 도사관(图书馆) 고향(故乡) 固有词:韩国本身具有的词汇。 例:사람(人) 눈(眼) 보다(看) 外来词:由汉语以外的其他语种融入韩国词汇,与原词读音相近的词。 例:바나나(香蕉) 버스(公共汽车) 컴퓨터(电脑) 1.5 韩语语法特点 汉语是孤立语,它的语法关系主要通过语序来体现。韩语属于粘着语,它的语法关系主要是通过附着在单词后面的助词和语尾的变化来表示的。 韩语是以动词结束的语言。与日语相同。 韩语的句子结构是:主语 + 目的语(宾语) + 叙述语(谓语) 例:나는 책을 봤차我 书 看了其中는是主格助词表示前面的是主语,는是目的语助词表示前面的是宾语,봤차中涵盖了过去式。 다음 시간에 만나요! 下节课再见!]]></content>
<categories>
<category>学习笔记</category>
<category>韩语学习</category>
</categories>
<tags>
<tag>韩语</tag>
<tag>韩语发音</tag>
</tags>
</entry>
<entry>
<title><![CDATA[剑指offer|笔记]]></title>
<url>%2F2018%2F09%2F18%2Fbook-%E5%89%91%E6%8C%87offer-%E4%BD%95%E6%B5%B7%E6%B6%9B%2F</url>
<content type="text"><![CDATA[第1章 面试的流程1.1 面试官谈面试 对于初级程序员,一般偏向考察算法和数据结构;对于高级程序员,关注专业技能和项目经验。 对公司近况,项目情况有所了解,准备好合适的问题问面试官。 1.2 面试的三种形式 电话面试 共享桌面远程面试 思考清楚再开始编码 良好的代码命名和缩进对齐习惯 能够单元测试:定义函数后立即对该函数进行全面的单元测试 现场面试 1.3 面试的三个环节 行为面试 应聘者的项目经验 简短的项目背景 完成的任务 为完成任务做了哪些工作,怎么做的 自己的贡献(具体) 常见问题 你在该项目中遇到的最大的问题是什么?你是如何解决的? 从这个项目中你学到了什么? 什么时候会和其他团队成员有什么样的冲突?你们是如何解决冲突的? 应聘者掌握的技能 参与、负责、了解、熟悉、精通的区别 技术面试 基础知识扎实全面,包括编程语言、数据结构、算法等 能写出正确的、完整的、鲁棒的高质量代码 例:把一个字符串转化成整数 例:求链表中的倒数第k个节点 能思路清晰地分析、解决复杂问题 能从时间、空间复杂度两方面优化算法效率 例:求斐波那契数列使用递归会存在大量重复计算,时间复杂度$O(2^n)$;先求f(1),f(2),相加求得f(3),以此类推,时间复杂度$O(n)$ 具备优秀的沟通能力、学习能力、发散思维能力等 应聘者提问 第2章 面试需要的基础知识2.1 面试官谈基础知识 面向对象的特性、构造函数、析构函数、动态绑定、内存管理 常用的设计模式、UML图2.2 编程语言]]></content>
<tags>
<tag>python</tag>
<tag>面试</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第372题|删除链表节点 [简单]]]></title>
<url>%2F2018%2F09%2F06%2FLintCode-0372-delete-node-in-a-linked-list%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例Linked list is 1->2->3->4, and given node 3, delete the node in place 1->2->4原题链接 2. 解题思路将node的值替换为node的next的值,再将node.next替换为node.next.next。即将node.next复制到node再删去node.next。 3. 参考代码1234567891011121314151617"""Definition of ListNodeclass ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next"""class Solution: """ @param: node: the node in the list should be deletedt @return: nothing """ def deleteNode(self, node): node.val, node.next = node.next.val, node.next.next]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第373题|奇偶分割数组 [简单]]]></title>
<url>%2F2018%2F09%2F06%2FLintCode-0373-partition-array-by-odd-and-even%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述分割一个整数数组,使得奇数在前偶数在后。样例给定 [1, 2, 3, 4],返回 [1, 3, 2, 4]。挑战在原数组中完成,不使用额外空间。原题链接 2. 解题思路使用两个指针,一个从头到尾,一个从尾到头,每当发现左半边指针指向偶数,右半边指针指向奇数时将两个数调换,直到两指针汇集到数组正中间。 3. 参考代码1234567891011121314151617class Solution: """ @param: nums: an array of integers @return: nothing """ def partitionArray(self, nums): i = 0 j = len(nums) - 1 while(i < j): if nums[i] % 2 == 1: i += 1 if nums[j] % 2 == 0: j -= 1 if i < j: tmp = nums[i] nums[i] = nums[j] nums[j] = tmp]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第38题|搜索二维矩阵Ⅱ [中等]]]></title>
<url>%2F2018%2F09%2F06%2FLintCode-0038-search-a-2d-matrix-ii%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述写出一个高效的算法来搜索m×n矩阵中的值,返回这个值出现的次数。这个矩阵具有以下特性: 每行中的整数从左到右是排序的。 每一列的整数从上到下是排序的。 在每一行或每一列中没有重复的整数。样例考虑下列矩阵:[[1, 3, 5, 7],[2, 4, 7, 8],[3, 5, 9, 10]]给出target = 3,返回 2挑战要求O(m+n)时间复杂度和O(1)额外空间原题链接 2. 解题思路从矩阵右上角开始查找,若当前数大于target,则向左一格;若当前数小于target,则向下一格;若当前数等于target,则向左下一格。 3. 参考代码1234567891011121314151617181920212223class Solution: """ @param matrix: A list of lists of integers @param target: An integer you want to search in matrix @return: An integer indicate the total occurrence of target in the given matrix """ def searchMatrix(self, matrix, target): if matrix == []: return 0 max_m = len(matrix) - 1 m = 0 n = len(matrix[0]) - 1 count = 0 while m <= max_m and n >= 0: if matrix[m][n] == target: count = count + 1 m = m + 1 n = n - 1 elif matrix[m][n] > target: n = n - 1 elif matrix[m][n] < target: m = m + 1 return count]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第3题|统计数字 [中等]]]></title>
<url>%2F2018%2F09%2F06%2FLintCode-0003-digit-counts%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述计算数字k在0到n中的出现的次数,k可能是0~9的一个值样例例如n=12,k=1,在 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次 (1, 10, 11, 12)原题链接 2. 解题思路把数的集合转化成字符串,再从字符串中找k 3. 参考代码1234567891011class Solution: class Solution: """ @param k: An integer @param n: An integer @return: An integer denote the count of digit k in 1..n """ def digitCounts(self, k, n): nums = [str(i) for i in range(n + 1)] s = "".join(nums) return s.count(str(k))]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第40题|用栈实现队列 [中等]]]></title>
<url>%2F2018%2F09%2F05%2FLintCode-0040-implement-queue-by-two-stacks%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述正如标题所述,你需要使用两个栈来实现队列的一些操作。队列应支持push(element),pop() 和 top(),其中pop是弹出队列中的第一个(最前面的)元素。pop和top方法都应该返回第一个元素的值。样例比如push(1), pop(), push(2), push(3), top(), pop(),你应该返回1,2和2。挑战仅使用两个栈来实现它,不使用任何其他数据结构,push,pop 和 top的复杂度都应该是均摊O(1)的。原题链接 2. 解题思路 栈与队列的相同点 都是线性结构。 插入操作都是限定在表尾进行。 都可以通过顺序结构和链式结构实现。 插入与删除的时间复杂度都是O(1),在空间复杂度上两者也一样。 多链栈和多链队列的管理模式可以相同。栈与队列的不同点 栈是先进后出“LIFO”,队列是先进先出“FIFO”。 删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。 应用场景不同,常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。 顺序栈能够实现多栈空间共享,而顺序队列不能。 使用一个栈作为push列表,表示队列中的元素从尾到头的排列形式。使用一个栈作为pop列表,表示队列中的元素从头到尾的排列形式。当pop列表为空而此时需要pop时,把push列表中的所有元素append到pop列表中。 例子对于push(1), pop(), push(2), push(3), top(), pop()push(1):stack1 = [1], stack2 = []pop():stack1 = [], stack2 = [1] => stack2 = []push(2):stack1 = [2], stack2 = []push(3):stack1 = [2, 3], stack2 = []top():stack1 = [], stack2 = [3, 2]pop():stack1 = [], stack2 = [3] 3. 参考代码代码112345678910111213141516171819202122232425262728293031323334353637383940414243class MyQueue: def __init__(self): self.stack1 = [] self.stack2 = [] """ @param: element: An integer @return: nothing """ def push(self, element): if self.stack1: self.stack1.append(element) else: while self.stack2: self.stack1.append(self.stack2.pop()) self.stack1.append(element) """ @return: An integer """ def pop(self): if self.stack2: return self.stack2.pop() elif self.stack1: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop() else: return None """ @return: An integer """ def top(self): if self.stack2: return self.stack2[-1] elif self.stack1: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2[-1] else: return None 代码2123456789101112131415161718192021222324252627282930class MyQueue: def __init__(self): self.stack1 = [] self.stack2 = [] """ @param: element: An integer @return: nothing """ def push(self, element): self.stack1.append(element) """ @return: An integer """ def pop(self): if len(self.stack2) == 0: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2.pop() """ @return: An integer """ def top(self): if len(self.stack2) == 0: while self.stack1: self.stack2.append(self.stack1.pop()) return self.stack2[-1]]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第73题|前序遍历和中序遍历树构造二叉树 [中等]]]></title>
<url>%2F2018%2F09%2F02%2FLintCode-0073-construct-binary-tree-from-preorder-and-inorder-traversal%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述根据前序遍历和中序遍历树构造二叉树。样例给出中序遍历:[1,2,3]和前序遍历:[2,1,3]. 返回如下的树: 2 / \1 3原题链接 2. 解题思路 二叉树的遍历 前序遍历(根-左-右) 中序遍历(左-根-右) 后序遍历(左-右-根) 前序遍历的第一个点一定是树的根节点,对应中序遍历的中间一个点,假设在位置i。这个点左侧的所有点均属于根的左子树,右侧的点均属于根的右子树。每次取前序遍历[1:i+1]和中序遍历[:i]对应于左子树,取前序遍历[i+1:]和中序遍历[i+1:]对应于右子树,递归继续以上过程。 3. 参考代码12345678910111213141516171819202122232425"""Definition of TreeNode:class TreeNode: def __init__(self, val): self.val = val self.left, self.right = None, None"""class Solution: """ @param inorder: A list of integers that inorder traversal of a tree @param postorder: A list of integers that postorder traversal of a tree @return: Root of a tree """ def buildTree(self, preorder, inorder): if len(preorder) == 0: return None elif len(preorder) == 1: return TreeNode(preorder[0]) else: node = TreeNode(preorder[0]) pos = inorder.index(preorder[0]) node.left = self.buildTree(preorder[1 : pos + 1], inorder[: pos]) node.right = self.buildTree(preorder[pos + 1 :], inorder[pos + 1 :]) return node]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第159题|寻找旋转排序数组中的最小值 [中等]]]></title>
<url>%2F2018%2F09%2F02%2FLintCode-0159-find-minimum-in-rotated-sorted-array%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述假设一个旋转排序的数组其起始位置是未知的 (比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。你需要找到其中最小的元素。你可以假设数组中不存在重复的元素。样例给出[4,5,6,7,0,1,2] 返回 0原题链接 2. 解题思路一个非减排序数组经过旋转后被分裂成了两个非减排序数组。左侧数组中的任意数均大于右侧数组中的所有数。断层的左边即全局最大数,右边即全局最小数。 思路1从数组开始位置开始遍历,直到某一刻nums[i]>nums[i+1],此时存在断层,nums[i+1]即为全局最小数。若直到数组遍历完nums[i]<=nums[i+1]均成立,则nums[0]为全局最小数。时间复杂度为$O(n)$。 思路2采用二分查找,若中间点大于首位元素,则最小数在右半数组;若中间点小于等于队尾元素,则最小数在左半数组。如此递归查找,当首尾元素紧挨时,尾元素即为全局最小值。时间复杂度为$O(\log n)$。 3. 参考代码代码112345678910class Solution: """ @param nums: a rotated sorted array @return: the minimum number in the array """ def findMin(self, nums): for i in range(0, len(nums)-1): if nums[i] > nums[i+1]: return nums[i+1] return nums[0] 代码21234567891011121314151617class Solution: """ @param nums: a rotated sorted array @return: the minimum number in the array """ def findMin(self, nums): left = 0 right = len(nums) - 1 if nums[left] < nums[right]: return nums[0] while right - left > 1: mid = int((left + right) / 2) if nums[mid] >= nums[left]: left = mid elif nums[mid] <= nums[right]: right = mid return nums[right]]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第35题|翻转链表 [简单]]]></title>
<url>%2F2018%2F09%2F02%2FLintCode-0035-reverse-linked-list%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述翻转一个链表样例给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null挑战在原地一次翻转完成原题链接 2. 解题思路设置一个指针pre指向翻转后的链表表头,初始指向null。每次对于原链表的表头head,使head.next指向pre,pre指向head,head指向head.next。 例子对于1->2->3->null初始:head.val = 1, head.next.val = 2, pre = None第一次迭代:head.next.val = None, pre.val = 1, head.val = 2, pre为表头的链表:1->null第二次迭代: head.next.val = 1, pre.val = 2, head.val = 3, pre为表头的链表:2->1->null第三次迭代: head.next.val = 2, pre.val = 3, head.val = None, pre为表头的链表:3->2->1->null 3. 参考代码1234567891011121314151617181920"""Definition of ListNodeclass ListNode(object): def __init__(self, val, next=None): self.val = val self.next = next"""class Solution: """ @param head: n @return: The new head of reversed linked list. """ def reverse(self, head): pre = None while head: head.next, pre, head = pre, head, head.next return pre]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第6题|合并排序数组Ⅱ [简单]]]></title>
<url>%2F2018%2F09%2F02%2FLintCode-0006-merge-two-sorted-arrays%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述合并两个排序的整数数组A和B变成一个新的数组。样例给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]挑战你能否优化你的算法,如果其中一个数组很大而另一个数组很小?原题链接 2. 解题思路设置两个指针分别指向两个数组的首位,每次将当前指针指向的两个数字比较,将较小的插入新数组,并将其所在数组指针后移一位。直到其中一个数组所有数字均已插入新数组,则将另一个数组的所有剩余项一起插入新数组。 3. 参考代码1234567891011121314151617181920212223242526272829class Solution: """ @param A: sorted integer array A @param B: sorted integer array B @return: A new sorted integer array """ def mergeSortedArray(self, A, B): C = [] len_a = len(A) len_b = len(B) i = 0 j = 0 while i < len_a and j < len_b: if A[i] < B[j]: C.append(A[i]) i = i + 1 elif A[i] > B[j]: C.append(B[j]) j = j + 1 else: C.append(A[i]) C.append(B[j]) i = i + 1 j = j + 1 if i < len_a: C.extend(A[i:]) if j < len_b: C.extend(B[j:]) return C]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode第2题|尾部的零 [简单]]]></title>
<url>%2F2018%2F09%2F02%2FLintCode-0002-trailing-zeros%2F</url>
<content type="text"><![CDATA[1. 问题介绍 描述设计一个算法,计算出n阶乘中尾部零的个数样例11! = 39916800,因此应该返回 2挑战O(logN)的时间复杂度原题链接 2. 解题思路对$1 \times 2 \times \dots \times N$进行因式分解,结尾的每一个0都代表了含有一个因子10。而所有的因子10一定是由5与偶数相乘而得,即必定含有质因子2和5。由于阶乘展开式中2的个数远多于5的个数,因而计算5的个数即可。 3. 参考代码123456789101112class Solution: """ @param: n: An integer @return: An integer, denote the number of trailing zeros in n! """ def trailingZeros(self, n): count = 0 tmp = int(n / 5) while tmp != 0: count += tmp tmp = int(tmp / 5) return count]]></content>
<tags>
<tag>算法</tag>
<tag>LintCode</tag>
<tag>python</tag>
</tags>
</entry>
<entry>
<title><![CDATA[LintCode|归档]]></title>
<url>%2F2018%2F09%2F01%2FLintCode-all%2F</url>
<content type="text"><![CDATA[LintCode第2题|尾部的零 [简单]LintCode第3题|统计数字 [中等]LintCode第6题|合并排序数组Ⅱ [简单]LintCode第35题|翻转链表 [简单]LintCode第38题|搜索二维矩阵Ⅱ [中等]LintCode第40题|用栈实现队列 [中等]LintCode第73题|前序遍历和中序遍历树构造二叉树 [中等][LintCode第140题|快速幂 [中等]]LintCode第159题|寻找旋转排序数组中的最小值 [中等]LintCode第174题|删除链表中倒数第n个节点 [简单][LintCode第371题|用递归打印数字 [中等]]LintCode第372题|删除链表节点 [简单][LintCode第245题|子树 [中等]]LintCode第373题|奇偶分割数组 [简单]]]></content>
<tags>
<tag>LintCode</tag>
<tag>归档</tag>
</tags>
</entry>
<entry>
<title><![CDATA[中国大历史|黄仁宇]]></title>
<url>%2F2018%2F07%2F14%2Fbook-%E4%B8%AD%E5%9B%BD%E5%A4%A7%E5%8E%86%E5%8F%B2-%E9%BB%84%E4%BB%81%E5%AE%87%2F</url>
<content type="text"><![CDATA[第零章 为什么称为“中国大历史” 徭役税收:里甲、均徭、驿传、民壮 官僚系统里以仪礼代替行政,维持各品级文官的协同和谐,不顾及各区内经济因素之公平而自由的交换。 《二十四史》—《食货志》 《资治通鉴》 Comprehensive Mirror for Aid In Government 第一章 西安与黄土地带 现今考古仍旧无法证明夏代一千的历史记载是否属实,而商朝又甲骨文和殷墟遗址佐证。 西安—华清池—杨贵妃—唐玄宗—天宝十四年,安禄山“清君侧”起兵谋反,于四川马嵬驿,杨贵妃被缢。 《长恨歌》唐·白居易汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝。承欢侍宴无闲暇,春从春游夜专夜。后宫佳丽三千人,三千宠爱在一身。金屋妆成娇侍夜,玉楼宴罢醉和春。姊妹弟兄皆列土,可怜光彩生门户。遂令天下父母心,不重生男重生女。骊宫高处入青云,仙乐风飘处处闻。缓歌慢舞凝丝竹,尽日君王看不足。渔阳鼙鼓动地来,惊破霓裳羽衣曲。九重城阙烟尘生,千乘万骑西南行。翠华摇摇行复止,西出都门百余里。六军不发无奈何,宛转蛾眉马前死。花钿委地无人收,翠翘金雀玉搔头。君王掩面救不得,回看血泪相和流。黄埃散漫风萧索,云栈萦纡登剑阁。峨嵋山下少人行,旌旗无光日色薄。蜀江水碧蜀山青,圣主朝朝暮暮情。行宫见月伤心色,夜雨闻铃肠断声。天旋地转回龙驭,到此踌躇不能去。马嵬坡下泥土中,不见玉颜空死处。君臣相顾尽沾衣,东望都门信马归。归来池苑皆依旧,太液芙蓉未央柳。芙蓉如面柳如眉,对此如何不泪垂。春风桃李花开日,秋雨梧桐叶落时。西宫南内多秋草,落叶满阶红不扫。梨园弟子白发新,椒房阿监青娥老。夕殿萤飞思悄然,孤灯挑尽未成眠。迟迟钟鼓初长夜,耿耿星河欲曙天。鸳鸯瓦冷霜华重,翡翠衾寒谁与共。悠悠生死别经年,魂魄不曾来入梦。临邛道士鸿都客,能以精诚致魂魄。为感君王辗转思,遂教方士殷勤觅。排空驭气奔如电,升天入地求之遍。上穷碧落下黄泉,两处茫茫皆不见。忽闻海上有仙山,山在虚无缥渺间。楼阁玲珑五云起,其中绰约多仙子。中有一人字太真,雪肤花貌参差是。金阙西厢叩玉扃,转教小玉报双成。闻道汉家天子使,九华帐里梦魂惊。春风桃李花开日,秋雨梧桐叶落时。西宫南内多秋草,落叶满阶红不扫。梨园弟子白发新,椒房阿监青娥老。夕殿萤飞思悄然,孤灯挑尽未成眠。迟迟钟鼓初长夜,耿耿星河欲曙天。鸳鸯瓦冷霜华重,翡翠衾寒谁与共。悠悠生死别经年,魂魄不曾来入梦。临邛道士鸿都客,能以精诚致魂魄。为感君王辗转思,遂教方士殷勤觅。排空驭气奔如电,升天入地求之遍。上穷碧落下黄泉,两处茫茫皆不见。忽闻海上有仙山,山在虚无缥渺间。楼阁玲珑五云起,其中绰约多仙子。中有一人字太真,雪肤花貌参差是。金阙西厢叩玉扃,转教小玉报双成。闻道汉家天子使,九华帐里梦魂惊。揽衣推枕起徘徊,珠箔银屏迤逦开。云鬓半偏新睡觉,花冠不整下堂来。风吹仙袂飘飖举,犹似霓裳羽衣舞。玉容寂寞泪阑干,梨花一枝春带雨。含情凝睇谢君王,一别音容两渺茫。昭阳殿里恩爱绝,蓬莱宫中日月长。回头下望人寰处,不见长安见尘雾。惟将旧物表深情,钿合金钗寄将去。钗留一股合一扇,钗擘黄金合分钿。但教心似金钿坚,天上人间会相见。临别殷勤重寄词,词中有誓两心知。七月七日长生殿,夜半无人私语时。在天愿作比翼鸟,在地愿为连理枝。天长地久有时尽,此恨绵绵无绝期。 西安事变—蒋介石蒙难 中国新石器时代的遗址最初出现于公元前4000年—碳14放射性技术 商朝—公元前约1600年—遗址位于今河南省,历史上称为“关东” 人祭 国王的陵墓由上而下掘土而成,上端的坑大,越至下端愈小。国王的陪葬品有战车和马匹,殉葬的人被斩首,头颅和躯体整齐地排列。出殡时有繁缛的礼节。 甲骨文:象形(日月)、会意(东祭)、形声(亦来)—日在树后升起是为东,双手执鸡放在樽俎内为祭。 第二章 亚圣和始皇 武王伐纣建立周朝,以封建方式制定了一种合乎当时农业扩张的统治形态,又以宗法制度使封建统治更加稳固。 亚圣—孟子—生于山东之邹—劳心者治人,劳力者治于人—乐岁终身饱,凶年免于死亡—五十可以衣帛,七十可以食肉。 中国古代史里的日期只有在公元前841年之后才能确定无误。因为自此以后,古书里提及天候星象的变化可以和外间的记录相对照。之前的日期带有推算性质。 周人尚鬼,认为万物有灵。 周公—文王之子,武王之弟—封建—将封建制与宗法制结为一体—耕地井田制 公元前771年,国度西安被入侵的戎人毁灭,国王被杀,王子东迁,史称东周,东周又被分为春秋时代和战国时代。如此称呼是源于《春秋》《战国》两本书。 道家—圣人不死,大盗不止—崇信宇宙间的一元组织,回归原始的简朴 第三章 土壤、风向和雨量 易于耕作的纤细黄土、能带来丰沛雨量的季候风,时而润泽大地时而泛滥成灾的黄河,是影响中国命运的三大因素。它们直接或间接地促使中国要采取中央集权式的、农业形态的官僚体系。 杨朱—虽拔一毛以利天下不为也—各人遵循自己的私利观以行事 第四章 兵马俑的幕后 全面改革—贵族被废为平民,官吏按能力任职,井田制度遗体取消,土地得以自由买卖,土地税按亩征收,士兵按征兵入伍—重农抑商—中央集权制 废六国,全国划分为三十六郡,每郡守尉监各一—标准化文字、度量衡—焚书坑儒。 秦王有一次因风受阻而不能渡湘水,归罪湘君女神作祟,于是遣发三千囚徒去砍伐山上的树木以资报复 以黑色代表帝国之色彩 预定每天必须过目的书简以重量作进度,不到目标不得休息 秦始皇墓不少匠役由于熟悉内情过多而被活埋在陵寝之内 兵马俑的艺术与技巧之所以不能持续,可以用缺乏社会的推动力来解释。米开朗基罗需要教廷雇佣才能发展他的天才,鲁本斯靠替各国国王画画像而生活优裕。秦国的无名艺术家的不幸之处在于他们的作品是集体完成的,只能贡献于一个君主之前。 第五章 第一帝国:树立楷模 汉武帝对内罢黜百家独尊儒术,奠下中央集权官僚体制运作的理论与方法,对外则连年发兵征讨匈奴,开拓四裔,使大汉声威远播,国势达于顶峰。 财政短绌,外戚干政 布衣卿相—萧何曹参曾任县级小官僚,樊哙曾为屠夫,黥布彭越曾为盗 汉初期帝国跨地过广,不能全部由中央集体管制,遂采取“斑马式”的省级结构—郡县+王侯—帝裔里的近亲为王,功臣中的卿相为侯 五行金木水火土—五方东西南北中—五色白青黑赤黄—五音宫商角徵羽—五德仁义礼 木=青色,为木叶萌芽之色火=赤色,为篝火燃烧之色土=黄色,为地气勃发之色金=白色,为金属光泽之色水=黑色,为深渊无垠之色 《易经》军事扩张—战—商、税—苛捐杂税、剥削百姓 李广—卫青(皇后卫子夫之异母弟)—霍去病(皇后外甥)—霍光(霍去病异母弟)—桑弘羊 王莽改革,刘秀杀之,建东汉 第六章 名士成为军阀 鼓吹天人合一、自然和谐 武帝创立太学 西汉张骞通西域,后汉班超通西域 冬至—日晷—阴阳交替之日 武帝“察举”“征辟”—举孝廉—贤良方正之士 [矛盾:政府与平民;中央政府与地方政府;天与人] 官渡之战—曹操—袁绍 第七章 长期分裂的局面 五胡乱华—藏族及阿尔泰语体系;原始蒙古人和初期突厥语系 魏擅骑兵,吴擅水师(公元三世纪) 第八章 历史向侧面进出 佛教大为盛行 “若天命在吾,吾其为周文王矣。” ——曹操 — 西伯向商称臣,其子武王取商代之;曹操称臣,其子曹丕宣布魏朝成立;司马家亦如法炮制 “国家本是精神产物。” ——钱穆《国史大纲》 在中国的戏曲里,曹操的面谱全部涂白,状如墙壁,以显示其谲诈,只有眼角稍沾墨笔,表现他机警应变的能力。 中国戏曲始于唐,取得市井间娱乐地位则于宋 “妾与陛下男女虽殊,俱托体先帝,陛下六宫万数,妾惟驸马一人,事大不均!” ——山阴公主楚玉 司马衷在位内战爆发,戎狄交兵。随从报告“天下荒馑,百姓饿死”,他闻之而曰:“何不食肉糜?” 南朝齐王“东昏侯”萧宝卷凿金为莲花贴地,令潘妃行其上,称“此步步生莲花也” 《西塞山怀古》唐·刘禹锡王濬楼船下益州,金陵王气黯然收。千寻铁锁沉江底,一片降幡出石头。人世几回伤往事,山形依旧枕寒流。今逢四海为家日,故垒萧萧芦荻秋。 第九章 统一的途径 拓跋氏建立北魏政权,直接征税于农户 颁布均田令 以五家为邻,五邻为里,五里为党,指派邻里党长。以一夫一妇为一“床”,责成出米两石,布一匹 第十章 第二帝国:已有突破,但未竟事功 [未完待续]]]></content>
<tags>
<tag>阅读札记</tag>
</tags>
</entry>
<entry>
<title><![CDATA[小技巧]]></title>
<url>%2F2018%2F01%2F01%2Fplug%2F</url>
<content type="text"><![CDATA[H5视频加速播放document.getElementById('html5player_html5_api').playbackRate=2.0 抖音、快手等视频解析http://douyin.iiilab.com/]]></content>
<tags>
<tag>归档</tag>
</tags>
</entry>
<entry>
<title><![CDATA[我的2018年]]></title>
<url>%2F2018%2F01%2F01%2Fmy-2018%2F</url>
<content type="text"><![CDATA[私密文档,请输入密码。 Incorrect Password! No content to display! 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]]></content>
<tags>
<tag>归档</tag>
</tags>
</entry>
</search>