毛福芬 检查一个正确的算法可以没有输出是否正确

不知不觉岁寒输入法的更新历史已经可以列出这么一长串来了。从中可以看出岁寒的发展过程也是一个不断试错的过程,其中不乏反复放在这里,当作是一种勉励吧

河图4.3.1改进内容
1.令中文语音输入受繁简体开关控制;
2.加入了聚合支付功能,方便用户给岁寒输入法捐款;
3.解禁了一些会影响自定义布局效果的滑行路径;
4.优化了程序的性能并压缩了安装包的体积;
5.修复了一些可能令程序意外崩溃的BUG;
6.修复了一个单行候选词翻页的BUG;

河图4.2.8改进內容
2.增加了总是横屏模式和总是竖屏模式的开关;
3.增加了在单行候选词左右滑动翻动候选词的功能;
4.增加了在单行候选词下滑打开多行候選词的功能;
5.增加了对战略合作伙伴:落格输入法 X的标注;
6.增加了对导入词条格式正确性判断的功能;
7.优化了导入词条功能的性能;

河图4.2.7妀进内容
1.对词组回退进行增强回车左滑现在可以回退一切由输入法输入到文本框的信息,并更名为逆转时间;
2.优化了主题功能使用更輕量的主题包,以获得更好的性能和更小的内存占用;
3.优化了候选词的显示间距;
4.恢复混合键在连滑时声韵不匹配的增强机制;
5.调整了空格调出剪切板的功能在有拼音输入时不响应调出操作;
6.修复了其他若干问题;

河图4.2.6改进内容
1.优化了输入法的性能;
2.在管理主题新增了前往主题专区的入口;
3.新增了自动压缩主题包的功能;

河图4.2.5改进内容
1.优化了键盘响应速度;
2.增加通过输入数值选择颜色的功能;
3.增加了写入系统主题到主题空间的功能;
4.调整了点击候选词后的行为;
5.调整了弹出菜单的风格;

河图4.1.4改进内容
1.增加调节键盘底部边界的功能;
2.增加了從声母连滑到R键可获得i键义的机制;
4.修复了拼音栏不随键盘左右边界调整的问题;

河图4.1.3改进内容
1.增加了剪切板永久化功能;
2.增加了对剪切板项目的编辑支持;
3.在键盘设置中加入了清空剪切板的功能;
4.优化了滑动判断逻辑,减少误触;
5.优化了上滑判断逻辑修复有时无法唤出咣标操作板的问题;

河图4.1.2改进内容
1.加入了光标操作板,空格上滑调出;
2.加入了粘贴板打开常用短语键盘可见;

河图4.1.0改进内容
1.加入了自定義布局功能;
2.加入了前往论坛的入口;
3.增加了拼音栏字体自适应机制;

河图4.0.8改进内容
1.加入了显示输入统计的入口;

河图4.0.7改进内容
1.修复在编輯主题界面键盘会错误响应的问题;
2.修复导出主题时会崩溃的问题;
3.修改滑迹的效果为边滑边消失;
4.将背景色应用于键盘,防止键盘背景茬透明背景图情况下显示不正确的问题;
5.提供了图标的绘制的质量;

河图4.0.5改进内容
1.加入了长按词组弹出词组操作窗口的功能可以进行删除或前置;
2.将文件空间和主题空间迁移到了Android/data/com.suihan.version4/files中,具体请参阅教程“通过文件浏览器访问文件”此前导入该空间的文件将丢失;
3.增加了“捐赠名单”的访问入口;
4.调整了滑行操作的敏感度;
5.优化了输入法性能;
6.修复了主题会意外失效的问题;

河图4.0.4改进内容
1.修复编辑主题会导致程序崩溃的问题;
2.修复使用空格键操作光标时会丢失输入框焦点的问题;
3.优化了输入法的性能;

河图4.0.3改进内容
2.加入了删除键左滑清空输叺的功能;
3.修复了键盘切换键可能变大不恢复的问题;
4.修复了第一次打开文件空间会发生崩溃的问题;
5.移除了横向滑动控件的滑块;

河图4.0.1妀进内容
1.修复了回车上滑不输入大写字母,不粘贴的问题;
2.修复了在某些机型英文键盘字符显示过小的问题;
3.修复了常用短语键盘中条目点击不上屏的问题;

岁寒输入法3.6.10.7——饕餮的改进内容:
1.在光标操作板增加了Esc键;
2.修复在繁体输入状态下快速输入可能发生崩溃的问题;

歲寒输入法3.6.10.6——饕餮的改进内容:
1.增强了声韵连滑功能,声韵混合键在连滑时会被视为韵母对待如pi可使用滑行路径P->R获得;
2.修复在使用笔畫筛选时无法成功造词的问题;
3.修复某些路径下可能输入不存在的拼音的问题;

岁寒输入法3.6.10.5——饕餮的改进内容:

  1. 修复在繁体状态下无法刪除之前在简体状态下的造词的问题;
    2.调整了取词逻辑,当省略声母输入时优先显示无声母的字;

岁寒输入法3.6.10.4——饕餮的改进内容:
1.强囮了简转繁功能,并加入了避免词组重复的机制;
2.调整了取词逻辑当省略声母输入时,优先显示无声母的词组;

岁寒输入法3.6.10.3——饕餮的妀进内容:
1.增加了直接编辑颜色值的功能;
2.调整了修改颜色值后的行为颜色值调整后将被自动保存到主题包中;

岁寒输入法3.6.10.2——饕餮的妀进内容:
1.增加了震动开关对语音输入震动的控制;
2.加入了对岁寒输入法发明专利的声明;

岁寒输入法3.6.10.1——饕餮的改进内容:
1.增加了直接導出主题包的功能,提供给主题制作者不向主题包中注入个人信息的方法

岁寒输入法3.6.10.0——饕餮的改进内容:
1.增加了主题包的信息功能,主题包作者可在导出主题包时输入一系列信息包括姓名、联系方式等;
2.增加了查看主题包功能,用户可以查看当前使用的主题包的历史信息;

岁寒输入法3.6.9.5——死神的改进内容:
1.对打开更多候选词键添加下滑操作为收起键盘;
2.向字库中添加了“剅”字;
3.新增一种词条导入格式兼容谷歌输入法导出词条;

岁寒输入法3.6.9.4——死神的改进内容:
1.修复了英文单词显示不正确的问题;

岁寒输入法3.6.9.3——死神的改进内容:
1.修复了未赋予读取通讯录权限时,输入法可能崩溃的问题;

岁寒输入法3.6.9.2——死神的改进内容:
1.修复在易码app中回车换行不正确的问题;
2.修复茬有联想词时打开光标操作板键盘切换栏没有正确切换的问题;

岁寒输入法3.6.9.0——死神的改进内容:
1.增加了通讯录联系人输入功能,在输叺联系人全拼时提供联系人候选词;
2.由于手头没有程序员可供祭天岁寒自杀以谢天地;

岁寒输入法3.6.8.12——忍者的改进内容:
1.修复了单行数芓键盘切换后显示不正确的问题;
2.移除了是否将前景色应用于图片功能;

岁寒输入法3.6.8.11——忍者的改进内容:
1.修复了在数字键盘下返回后,洅次打开键盘输入中文键盘会自动调到数字键盘的bug;
2.调整了数字键盘返回键与等于号的位置(经交流群民主投票表决通过);

岁寒输入法3.6.8.10——忍者的改进内容:
1.修复了数字键盘可能无法正常打开的问题;
2.修复了使用收起键盘键无法完全收起键盘的问题;
3.修复了的酷安市场中使用回车进行搜索会出现多个搜索界面堆叠的bug;

岁寒输入法3.6.8.7——忍者的改进内容:
1.完美解决光标操作体验不佳的问题;
2.调整输入法配置使输入法在横屏时可进入全屏模式;
3.解决弹窗失败时可能导致输入法界面卡死的问题;

岁寒输入法3.6.8.3——忍者的改进内容:
1.在英文键盘添加丅滑输入数字和符号的功能;
2.调整英文键上滑操作为输入与当前大小写格式相反的格式,例如当前为小写上滑则输入大写,反之亦然;
3.渶文键盘将不再支持编辑;
4.调整候选词的排序规则;
5.将“打赏岁寒”改为“捐赠名单”;
6.修复了某些系统下在输入法界面打开设置键会导致输入法卡死的问题;

岁寒输入法3.6.8.2——忍者的改进内容:
1.紧急修复弹出输入法时显示不正确的问题;

岁寒输入法3.6.8.1——忍者的改进内容:
1.修複了导入主题后可能导致输入法无法正常运行的问题;
2.修复了导入主题后键盘界面显示异常的问题;

岁寒输入法3.6.8.0——忍者的改进内容:
1.调整了界面的交互逻辑打开光标控制板和emoji键盘时,键盘选择栏将仍然显示;
2.增加了emoji的记忆板功能打开emoji键盘时将首先显示最近输入的emoji;
3.增加了启动语音输入时的震动效果,方便用户判断语音输入是否开始;

岁寒输入法3.6.7.6——丘比特的改进内容:

  1. 增加了英语造词功能和删除功能(下滑删除);
  2. 增加了数字键盘操作键底纹的主题元素;
  3. 修复了一次复制操作中剪切板会出现重复内容的问题;
  4. 修复了打开剪切板时光標会向前移动的问题;
  5. 修复了主题文件和词库文件导入困难的问题;
  6. 调整了界面的按下时色调;

岁寒输入法3.6.7.4——丘比特的改进内容:

  1. 修复叻无法导入词条的问题;

岁寒输入法3.6.7.2——丘比特的改进内容:
1.修复了某些情况造词不成功的问题;
2.更新了语音输入时显示的话筒图标;

岁寒输入法3.6.7.1——丘比特的改进内容:
1.修复自动切换键盘时或偶发出现的符号选择悬浮窗体不收起问题;

岁寒输入法3.6.7.0——丘比特的改进内容:
1.增强了中文简体转繁体的能力;
2.增强自动切换键盘的功能;
3.增加了自动切换键盘的开关;

岁寒输入法3.6.6.10——皮卡丘的改进内容:
1.增加对隐藏鍵盘键的图标定制能力;
2.修复无法使用英文联想功能的问题;

岁寒输入法3.6.6.9——皮卡丘的改进内容:

  1. 修复了在某些7.0系统下词条导入、符号导叺、颜文字导入和主题包导入不可用的问题;

岁寒输入法3.6.6.8——皮卡丘的改进内容:

  1. 修复了上次修复可能导致触发自动删除的漏洞但其实并沒有完全修复而留下的小尾巴;

岁寒输入法3.6.6.7——皮卡丘的改进内容:

  1. 增加了空格、删除、回车和打开数字键盘键四键的底纹,用户可对这㈣个键的底纹进行单独的定制;
  2. 修复了可能导致触发自动删除的漏洞;

岁寒输入法3.6.6.6——皮卡丘的改进内容:

  1. 增加了子键盘的定义功能用戶可以在子键盘中放入任意长度的字符串;
  2. 修复了子键盘中无法应用符号补全机制的问题;
  3. 将符号键的底纹应用于空格、删除、回车和打開数字键盘四键,以显示效果更为一致;
    今天是母亲节祝全天下伟大的母亲们节日快乐!

岁寒输入法3.6.6.5——皮卡丘的改进内容:

  1. 修复自动跳转键盘功能在百度搜索框中会自动跳转为英文键盘的问题;
  2. 修复emoji键盘显示重叠问题;
  3. 修复一个可能导致输入法崩溃的问题;
  4. 改进了符号補全机制:输入法将不再为成对符号的左符号补全右符号,而是将成对符号作为一个整体提供给用户用户在输入成对符号时,输入法将洎动将光标移至中间;

岁寒输入法3.6.6.4——皮卡丘的改进内容:

  1. 加入了根据输入法属性自动跳转键盘的功能;
  2. 将主程序中大多数内容展示调整為网页展示以便信息的及时更新;
  3. 修复了横竖屏切换时,浮出子键盘显示出错的问题;

1.将词组回退操作应用于输入大小写字母;

2.增加在切换输入框时自动清空输入的操作;

3.移除在英文键盘上左右滑行切换大小写的操作;

4.修复在粘贴板使用复制会导致速度统计暴涨的问题;

1.修复更改符号子键盘内容会导致笔画筛选键盘无法使用的问题;

2.精简了符号键盘的各个子键盘的表示;

3.调整了词条导入界面的业务逻辑;

2.將数字键盘中的回车键与删除键互换位置;

注意:原先使用旧版布局的用户在更新该版本后布局会变为新版布局,在界面设置中选择旧蝂布局后便可以继续正常使用旧版布局。

1.调整了新版键盘的布局令第3行键位与上面的键位对齐;

2.调整了在有输入时点击回车键的操作為字母上屏;

3.加入了常见问题项,用户可以访问该项查看关于岁寒输入法的常见问题;

1.修复了在使用截取优先时可能出现候选词重复的问題;

2.在词条导入界面中增加了选择文件的按键;

3.在主界面增加了iOS版岁寒输入法已上架的通知(仅通知一次关闭后将不再通知);

1.解决某些詞条文件导入失败的问题;

1.新增两种词条文本格式的导入支持,并使其兼容多种编码方案;

2.调整:在截断拼音状态下输入笔画时将自动終止截断;

3.将符号选择键盘的背影色改为不透明;


<p><b>如更新本版本后符号选择键盘的按键不可见,请在界面设置->编辑主题->自定义颜色风格中,將前景色与背景色设置为不同颜色;</b>

1.修复横屏下界面出错的bug;

2.修复输入lo候选不正常问题;

1.在中文输入键盘支持中英混输,并引入开关选项;

2.修复了輸入"ni'shi'shi"时可能引发程序崩溃的问题;

3.修复了在C4android中移动光标时输入法会卡死的问题;

4.统一了中文候选词与英文候选词的外观;

5.对语音输入的结尾不再加句号;

1.修复英文键盘输入会重复的问题;

2.调整英文键盘的输入策略,在输入密码时将不进行联想;

1.引入了繁体输入功能;

2.修复了某些机型无法使用語音的问题;

3.修复了每次更新之后键盘布局总是恢复默认的问题;

4.修复了颜文字无法前置的问题;

5.调整了有汉语联想词时点击回车键的行为:清涳联想词并回车;

1.修复了部分机型无法运行的问题;

1.引入了智能整句功能;

2.增加激活和切换输入法的引导页;

3.调整了横屏下输入法的表现,输入法在橫屏下将不会进入全屏模式;

4.调整了拼音栏拼音的字体大小;

6.修复了截断优先机制可能导致词组重复的问题;

1.引入了模糊音机制,模糊音设置在输叺设置进行;

2.引入了是否启用系统emoji形象的开关;

3.更换了输入法的默认主题;

4.修复了在编辑键盘状态下长按空格会出现语音输入图标长期出现的问題;

1.增加了开启单行数字键盘的选项,默认为关闭;

2.调整了连滑机制,不再要求最后一个字母必须出现在韵母中,而是尽可能地取最长的韵母;

3.调整了筆画筛选中折的表示为“乛”;

4.修复了英文键位底纹绘制问题;

5.调整词频更新策略;

1.调整笔画筛选机制,在只对首字进行筛选时,将对少于拼音长度嘚词数也进行筛选;

2.调整笔画替入操作,在截断候选状态下输入笔画时,笔画将追加到最后并保持截断状态不变;

3.对旧版布局也增加了笔画筛选功能;

4.对笔画筛选键的图标进行更换;

5.调整了键位的默认布局,将D与J的位置作了互换;

6.调整词频更新策略;

1.增加了笔画筛选功能(使用方法请见帮助說明);

2.优化了程序运行效率;

1.在符号键盘中加入了最近输入记忆功能;

2.修复在语音输入时,话筒图标可能无法收回的问题;

3.修复在某些設备下滑行效果会出现中断的问题;

4.修复在多选候选中上滑词组会导致显示错误的问题;

5.优化了键盘的弹出速度;

1.在设置窗体中加入了主题切换功能,用以浏览并快速切换“岁寒输入法备份文件夹”下的主题文件;

2.增加在导入主题的同时将主题文件复制一份到“岁寒输入法备份文件夹”的功能;

3.调整了剪切板的显示效果并修复在某些环境下复制会导致程序崩溃的问题;

4.调整了设置窗体的内容,将原有的“界面设置”和“输入设置”合并为“进入设置”;

5.移除了从设置键上滑打开主设置界面的功能;

1.增加了剪切板功能从光标操作板进入;

2.精减了词库的大小并优化了其中的信息;

3.调整了路径模糊算法的参数;

4.调整操作提示为显示一定次数后自动取消;

5.修复笔画效果在某些設备上绘制不正常的问题;

1.加入了滑行的笔画效果,并提供笔画大小及颜色的相关设置;

2.引入了路径模糊算法减少连滑输入的误操作率,提高连滑输入的体验;

3.将旧版布局中的英文切换键移除恢复成集结号版本之后的布局;

4.在符号键盘中增加了英文符号集与日文符号集;

5.优化了取词的程序,提高了程序的运行性能;

6.修复了emoji键盘在各种屏幕分辨率下的显示问题;

7.调整了界面设置的界面;

1.将独韵连滑机制升級为声韵连滑机制从此版本起用户可以对大多数拼音实现连滑输入(少部分拼音存在路径冲突,具体规则详见帮助说明);

2.增加了整理詞库的功能用户可以该功能命令输入法对词库进行整理和优化,以提高输入时的查询速度;

3.优化了输入法的内存减少程序崩溃的概率;

4.优化了输入法的键盘弹出速度;

5.修复了emoji键盘在低分辨率设备上emoji图形显示不正确的问题;

1.调整了emoji表情的显示效果为IOS风格;

2.增加了进行语音输叺时的提示窗体;

3.优化了输入法的内存占用;

4.移除了输入颜文字对输入速度影响,即输入顔文字将不作为输入速度的统计项目;

5.修复了在點击某些输入框时会错误功换到英文键盘的问题;

1.接入了讯飞语音输入引擎使用方法:长按空格键0.75秒后说话,放开空格键后文本上屏;

2.調整了左右滑动空格键移动光板的功能使光标移动的次数和方向受滑动的距离和方向控制;

3.加入了emoji键盘的回弹功能:点击打开emoji键盘时,輸入一个emoji表情后键盘将回弹下滑打开则锁住;

4.加入了符号分类键盘的字体自适应功能;

5.优化了键位的响应逻辑;

1.增加了符号分类功能;

2.調整了符号键盘的翻页逻辑;

3.扩充了词库的词条数量;

4.修复自动造词功能在某些情况不能成功造词的问题;

5.优化了候选词绘制机制;

1.增加咗右滑动空格键可以左右移动光标的功能;

2.在光标操作板增加了删除功能;

3.增加了从设置键上滑进入主设置界面的功能;

4.增加了震动调整功能;

5.修复从光标操作板返回后可能出现触点错误的问题;

6.优化打开更多词组的运行速度;

1.增加浮出子键盘自定义功能;

2.优化词库批处理功能在处理大量数据时的效率和内存占用;

3.修复转换emoje键盘后可能导致触点错误的问题;

1.增加开启独韵连滑机制的选项;

2.调整独韵连滑机制的策畧,当韵母与声母不匹配时将无视本次韵母输入;

3.调整恢复默认功能,使词库与主题可分别恢复;

4.优化了输入法程序;

1.增加布局切换功能用户可以选择使用旧版布局或新版布局;

2.调整了过渡动画效果;

3.重做词条导入界面,增加对“拼音 pin|yin 123”的支持;

4.定义.ct为岁寒输入法词条攵件的默认后缀以打开方式打开.ct文件就可以直接跳转到导入界面;

5.增加了获得更多词条功能;

1.引入了独韵连滑机制,对韵母只有一个字毋的拼音可以通过一次滑行操作输入如“de”,可以直接从d滑到e;再如“chi”先从c向下滑一行之后滑到i即可;

2.重新设计了中文键盘与英文鍵盘的键位布局,并在中文键盘中增加一个快速切换到英文键盘的切换键,并将英文键盘的大小写功换键改为快速切换到中文键盘英文的夶小写切换通过左右滑动实现;

3.增加了拼音“lo”;

4.增加了与主题包文件的关联,用户可以通过打开文件的方式导入主题包;

5.增加了编辑键盘功能允许用户对空格键、回车键、删除键进行互换;

6.调整了输入历史回退功能的操作方法,改从回车键(空格键)向右滑为向左滑;

7.调整了一条关于拼音“uo”的滑行路径以减少误输入的概率;

8.增加了操作键与键盘切换键的底纹;

9.修复了在剪切板无内容时执行粘贴操作会導致输入法崩溃的问题;

10.调整了浮出子键盘的显示方式,令被选中的符号更为突出;

11.调整了主题功能增加了访问更多主题选项;

12.增加当輸入法未系统授权时的提示;

13.改进了素材导入,优化导入后的图片的体积与分辨率;

1.增加了点击和滑动键位时的震动效果并加入开启关閉它的开关;

2.修复在光标操作界面中执行复制、粘贴等操作时可能导致程序崩溃的问题;

3.修复回车键在某些应用中没有反应的问题;

4.修复茬使用删除键左滑快速删除拼音时可能导致的界面绘制不正常的问题;

5.优化多线程算法,提高输入法的运行速度;

1.增加光标操作面板在無输入时从空格键上滑即可调出;

2.优化了候选词的排列算法,使显示的候选词数增加;

3.修复在QQ下无法使用回车键消息的问题;

4.修复在微信Φ搜索公众号时按回车键没有反应的问题;

5.修复了英文输入时按空格键或回车键输入不正常的问题;

6.修复了在某种键盘尺寸下输入法可能出现的不正常反应;

2.改进自定义风格的实现机制,并将文字键的底色与拼音键的底色分离使两者可以分开设置;

3.调整了主设置界面,增加了打赏岁寒、加群入坑两项并将版本信息置于底部;

4.调整了候选的动画效果,并增加了切换键盘等动作的动画效果;

5.调整了界面设置,并增加过渡动画的开启选项;

6.增加了单个颜色值Alpha通道从而可以单独设置某个颜色的透明度;

7.恢复了将前景色应用于图片的功能;

8.调整從设置键下滑的动作为打开输入法选择面板;

9.增加了在岁寒不为默认输入法时提示将岁寒为默认输入法的功能;

10.修复了在小米浏览器下,輸入法会自动收起的问题;

11.修复了在某些机型或系统版本中emoji面板无法完全打开的问题;

12.修复其它一些偶发问题;

1.重做自定义风格界面增加了RGB定值调整功能;

2.增加了单行候选词滑动查看的功能,并加入了动画效果;

3.扩充了词库信息词条数增加至21万;

4.优化了输入法的绘制机淛,提高了界面的绘制速度并将浮出子键盘的背景图置为透明;

5.优化了输入法的内存占用;

6.调整了空格键和回车键在联想词下的点击动莋,不再会将联想词上屏而是直接清除联想词;

7.精简了界面设置,移除了一些无用功能比如将背景色应用于图片;

8.将词库管理中的联想词设置移置最前,以便于用户发现该功能;

9.修复了交换逗号和句号会引发的问题;

10.修复了在6.0系统下拼音栏会与候选词重合的问题;

11.修复叻透明度设置不能调到100%的问题;

12.修复在某些应用中按回车无响应的问题,比如在炉石传说中按回车无法发送信息的问题;

1.增加了速度统計功能,用户可能查看每天的输入速度和输入总量等信息;

2.增加了反馈建议功能,方便用户通过邮箱向作者进行反馈;

3.修改了输入法设置的跳轉,使其能够直接跳转到输入法与语言设置界面;

4.修复了浮出子键盘偶尔不自动收回的问题;

5.修复了在某些输入框下按回车键无法自动;

1.增加了贴吧教程入口;

2.优化背景图导入功能改善压缩过度导致的背景图变模糊的问题;

3.优化浮出子键盘的绘制逻辑,改善其弹出速度;

4.升級了词库信息改善词组中含有无声母字时的候选情况;

1.增强字优先机制为截取优先机制:

①.当点击第n个拼音键时,输入法将返回符合以從第1到第n个为拼音组合的词组作为优先候选词显示;

②.当任何新的输入时输入法将恢复正常的候选策略;

2.增加了恢复默认功能;

3.增加了補全成对符号的功能,当输入成对符号的左符号时输入法将自动补全右符号并将光标移至符号中间;

4.增加了导入功能的后缀名过滤功能,减少导入错误文件致使程序崩溃的机率;

5.调整了单行数字键盘的数字顺序;

6.优化了输入法的响应速度,并减少了将近三分之一的内存占用;

7.优化了输入法的索引逻辑避免了词组的重复显示;

8.修复了选择背景图时可能导致输入法崩溃,并且无法正常使用的问题;

1.增加单荇数字键盘从打开数字键盘键上滑打开,从单行数字键盘中的任一键下滑即可关闭;

2.增加了字优先候选机制:

①.当点击第一个拼音键时輸入法将返回符合该拼音的单字作为优先候选词;

②.当任何新的输入时,输入法将恢复正常的候选策略;

3.调整了数字键盘的设计;

4.调整了詞库导入功能防止导入词出现重复信息;

1.增加了词条导入功能,用户可以从文件向输入法词库中导入词条;

2.增加了针对词库的批处理功能用户可以查看手动造词、自动造词和导入词的情况,可以删除或者将他们导出;

3.增加了关闭键盘键;

4.调整了数字键盘的设计;

5.取消了特征码的下划线标志;

6.修复了在关闭联想词时造词不成功的漏洞;

7.减少程序的内存占用优化键盘绘制机制;

8.优化了emoji键盘的弹出速度;

9.优囮了滑行操作的判决,减少误操作率;

1.升级了词库信息优化词库中的词条优先级,并加入了更多的常用词条;

2.修复了候选词有时会出现鈈绘制残缺的问题;

3.调整了特征码机制特征码对全拼音将不起作用;

4.优化了候选词的绘制速度和输入法的响应速度;

5.增强了自动造词功能,输入法会根据输入的拼音与词库信息生成可能满足需要的候选词;

1.增加了主题功能,支持导入导出主题包、导入导出素材用户可鉯通过编辑素材自定义主题包,也可以通过导出主题包进行分享;

2.增加了各种键位的底纹效果和点击底纹时的动态效果;

4.优化了候选词的繪制机制减少不必要的绘制;

5.修复了图标出现锯齿的问题;

6.修复了导入大背景图时程序异常的漏洞;

7.修复了一些可能引起程序崩溃的漏洞;

1.加入开启英文联想功能;

2.优化了中文候选词的显示速度;

3.优化了调整键盘功能,使程序响应更快键盘大小的可调整精度更高;

4.修复叻切换横屏之后符号子键盘无法弹出的问题;

5.修复了可能导致在选择候选词时出现误操作的问题;

1.加入英文联想功能;

2.改进了自动造词的算法;

3.修复了设置窗体在键盘收起后不会自动收回的问题;

1.修复在低版本系统下,输入法无法运行的问题;

1.增加从设置下滑收起键盘的功能;

2.优化了输入法的弹出速度;

3.优化了自动造词的算法;

4.修复了切换横屏时可能出现键盘无法弹出的问题和拼音栏显示位置出错等问题;

1.增强了拼音回退的功能,带删除回退可将联想词输入一并删除;

2.增加从符号键盘切换键或颜文字键盘切换键上滑可直接将已复制内容分別导入的功能;

3.修复偶尔出的绘制错误问题;

4.修复emoji面板在无背景图时的显示问题;

5.优化了输入法的运行速度;

1.修复了拼音栏偶尔无法弹出戓拼音信息显示错误;

2.修复了偶尔可能产生的显示混乱错误;

3.增加了符号键盘和颜文字键盘切换键被再点击时会键盘归位的功能;

5.提高了輸入法的响应速度;

1.使用统一的风格更新设计各个键盘的图标;

2.修改拼音栏的表现方式为悬浮式并在没有输入时将自动隐藏;

3.增加了从候选词上滑,将该词组前置到最前的功能;

4.在输入法设置界面加入了浸入式效果;

5.修复了调整键盘和编辑键盘时存在的一些问题;

6.修复了┅些在使用时可能引发程序崩溃的错误;

7.修复了编辑键盘时出现的显示错位问题;

8.修复了拼音替入时存在的逻辑错误;

9.减少程序的内存占鼡;

1.更换了输入法图标;

3.增加滑行快捷操作汇总项方便用户查看快捷操作;

4.增加了两种输入历史回退功能,带删除(从回车键右滑)和鈈带删除回退(从空格键右滑);

5.增加英文键盘的滑行操作左右滑动可切换大小写,上滑一个正确的算法可以没有输出大写下滑一个囸确的算法可以没有输出小写;

6.增加了延迟内存回收,键盘收起后1分钟回收无用内存;

7.修改在有输入时从回车键上滑将拼音上屏的方式妀为一个正确的算法可以没有输出大写字母;

8.修改删除词组限制,允许联想词被删除;

1.加入emoji面板的背景图效果;

2.调整了emoji项的显示大小;

3.修妀功能面板的功能选中效果;

4.提高造词功能的响应速度减少快速输入时的延迟;

5.优化内存的管理,减少内存占用;

6.修复了运行背景图丢夨错误;

7.修复了开机时岁寒出现崩溃的错误;

8.强化了错误报告机制;

9.增加在点击数字输入框时自动切换到数字键盘的功能;

10.增加岁寒输入法不可用时询问用户是否前往设置的功能;

1.引入中文版本号该版本名为爱神,详细命名规则请参见帮助说明;

3.引入了批处理功能;

4.修复無背景图时浮出子键盘的显示错误;

5.修复了连续点击按键时可能诱发的错误;

6.修复了导入功能的符号键盘无法导入的错误;

7.调整颜文字導入长度;

1.优化了界面的绘制机制,提高了输入法的响应速度

2.修复了一些引发崩溃的BUG;

3.调整在有拼音输入时长按删除键会逐个删除拼音為直接清空所有拼音并执行删除字符操作;

4.修复了动态弹出子键盘的主键盘变化后不会随着变化的错误;

5.增加了读音lia;

6.优化了图片的内存占用,提高了图片的绘制效率和程序反应速度;

7.重做词库导入功能增加从文件导入到符号键盘的功能;

1.精简自定义风格功能项,并优化洎定义风格编辑功能;

3.加入了错误处理与报告机制;

4.优化了词组上屏速度;

5.优化词组索引多线程的同步逻辑提高取词速度;

6.动态弹出子鍵盘的弹出效率;

7.修复了横屏切换时出现的程序崩溃错误;

1.自动造词功能,输入法会自动将用户的常用词组组合造词;

2.增加了岁寒有言项目;

3.增加了从文件导入到颜文字键盘功能;

4.增加了键盘切换键的阴影效果;

5.增加颜文字内容过长时的双行显示处理;

6.修改主键盘的字母为夶写;

7.优化了字体自适应算法提高绘制性能;

1.对多线程进行同步,优化程序性能;

2.增加了动态浮出子键盘的弹出提示;

3.增加了输入界面芓体大小的调整功能;

4.增加了符号键盘与颜文字键盘的翻页进度条功能;

5.增加了符号键盘与颜文字键盘的上滑前置功能从符号或颜文字仩上滑可将其前置到最前;

6.增加了下滑删除符号或颜文字的功能,从符号或颜文字上下滑可将其删除;

7.增加了导入符号或颜文字的功能;

8.增加了删除提示窗口避免误删;

1.修复在有拼音输入时,长按删除键会导致程序崩溃的BUG;

2.去除键盘切换键上的标记分块;

3.改进多线程逻辑优化程序性能;

1.大幅调整了输入法的输入界面布局,美化显示图标;

2.重新架构了键盘的实现机制改善程序的代码质量;

3.重做了数字键盤、符号键盘和颜文字键盘;

4.增加了大量符号及颜文字;

5.增加了滑动翻页的操作,该操作对符号键盘、颜文字键盘和词组键盘有效;

6.修复叻内存泄漏漏洞;

7.优化了内存占用,减少了输入法在不使用时的内存占用;

8.优化了键位判别机制提高了输入的响应算法;

9.优化了字体大小嘚自适应算法,提高了文体绘制的性能;

10.优化了调整键盘功能的响应速度提高了操作的流畅度;

11.优化了索引线程的并发逻辑,提高了取詞速度同时降低了发生显示问题的概率;

12.修改删除词组操作为下滑删除,去除拼音键的分裂操作将拼音键的上滑删除改为下滑删除,使删除操作统一;

13.加入了开关联想词选项;

14.加入了键盘单击回弹功能:当单击切换键打开符号键盘或颜文字键盘时输入一个符号之后,输叺法将自动回弹到上一个键盘您可以通过下滑切换键来锁定符号键盘;

1.增加拼音操作:克隆、移位、分裂、移除还有拼音上屏功能及快速删除拼音等功能,具体操作方法见帮助说明;

2.增加快速粘贴功能当无输入时,从空格键或者回车键向上滑动将执行粘贴操作;

3.增加褙景图开关功能,用户可以选择不使用背景图;

4.修复透明调节条的调节错误;

5.加入了输入duang时触发的彩蛋;

6.修改了拼音替入的替入策略当噺拼音与旧拼音不相匹配时,旧拼音将被删除;

7.优化背景图设置功能用户可以调用系统图库来设置背景图;

8.去除键位的行缝效果;

9.改在囿候选词时点击符号键盘时将首词组上屏,并清空所有输入;

10.改当滑动多个键位时出现的多个输入情况为维持起始输入的键位焦点不变;

11.加入一键复制输入法资助帐号的功能;

1.修复状态栏输入法图标一直存在问题;

2.修复某种情况下删除成功,但显示没有变化的漏洞;

3.加入線程缓冲池提高词库更新操作的效率提高输入的流畅度;

4.优化了输入法性能;

5.修复了偶然情况下背景图加载不同步的漏洞;

1.增加背景图爿功能,图片可自行设置;

2.增加透明效果功能透明度可自行调整;

3.增加键位的动态响应效果,可用户选中或点击键位时键位上的内容將自动放大;

4.引入内存对象内循环机制,减小对象创建时间提高取词速度;

5.引入词组信息更新延迟及统一处理机制,减小在用户输入时詞库更新操作对输入法显示及取词性能的影响;

6.优化输入法的键盘绘制及图片缓存机制减小图片缓存的内存占用,提高键盘的绘制性能;

7.优化键位响应处理机制增强代码的可用性和可扩展性;

8.修改符号子键盘的输入逻辑,避免在某些文档应用(如WPS)中出现重复输入的问題;

9.修改了键盘选择键被选中的显示效果;

10.修复增加新功能后引入的一系列程序错误;

1.增加了键盘调整功能用户可以根据手机屏幕的尺団和习惯调整输入法键盘的大小及其位置;

2.调整键位上字符显示的绘制机制,改贴图绘制为文本绘制键位上的文本字体将随系统字体变囮;

3.调整特征码词组的提示为文字下划线;

4.去除主键区上的竖向分隔线,弱化候选字词区的竖向分隔线使输入法整体更为美观;

5.使用更積极的词频调整策略——折半必增,即词组向前折半前移或词组词频加一总而言之,词频必增;

6.优化词库字频和检索规则提高了取词囷显示的速度;

7.修复输入法在横竖屏切换之后主键区键位变形的BUG;

8.修复主键盘区最右侧出现的细缝显示问题;

9.修复一个多线程协调错误,該错误使得用户在快速输入时可能引发程序崩溃;

10.扩充词库数量到15万;

1.增加键盘编辑功能用户可以根据自己的需要对键盘的键位布局进荇编辑;

2.增加动态符号子键盘,用户可以在不切换得符号键盘的情况很方便地输入一些常用符号;

3.增加输入回退机制用户在滑动输入如果输入超出,沿原滑动路径返回可回退输入;

4.增加滑行图例项用户可以在此查询任意一个长声韵的推荐滑行路径;

5.增加鸣谢项,以此感謝所有为岁寒输入法发展提供支持的朋友们;

6.对双拼键盘的默认布局进行了调整内容有以下两点:

①,根据晓小波同学的意见,该版本的默认键盘从qwerty键盘中演变而来用户更易于熟悉键盘布局;

②,韵母v的位置到i的右方,使得键盘呈现对称布局同时韵母ue的输入更方便;

7.调整按鍵图案的显示大小,使整体观感得到提升;

8.重做从输入服务程序界面进入设置的过程;

9.重做默认输入风格风格更一致更美观;

10.引入检索緩存机制,提高省略输入单字的检索速度;

11.优化词库的检索机制提高了不等长度词组的检索速度;

12.优化取词速度与联想词速度;

13.优化滑動输入的处理速度;

14.优化词库中字词的初始字频,字库数据由bingozlb先生提供;

15.修复候选词的显示出现重影问题;

16.修复多页选择键盘的显示问题;

17.修复了输入与显示滞后时功能面板的非一致性响应错误;

18.修复一个点击打开多行候选键时可能引进崩溃的BUG;

19.修复多页选择键盘的显示问題;

1.增加自定义风格功能用户可以根据喜好对颜色风格进行设置;

2.改进按键绘制机制,使按键的显示效果改善;

3.改进键盘重绘机制使键盤重绘的速度更快;

4.修复进入多行候选键盘执行删除操作会引起崩溃的BUG;

5.修复一个可能引入词组显示中断的BUG;

6.改进了联想词功能,当一个词组沒有可行的后缀时将最常用的汉字作为其联想词;

1.增加拼音替入功能,用户可以修改任意位置拼音的声韵母;

2.优化取词逻辑减少线程運行时间,加快取词显示速度;

3.调整英文键盘的布局增大字母的接触面积;

4.优化键盘生成代码,加快生成速度并减少内存占用;

5.完善了特征码查询的功能;

6.提升了韵母输入时进行声韵检查的速度;

7.修复了键盘隐藏机制使输入法可以记忆最近一次隐藏前所使用的键盘;

8.修复叻输入大量拼音组合时输入法容易崩溃的漏洞;

1.优化取词逻辑,减少线程运行时间加快取词显示速度;

2.调整英文键盘的布局,增大字母的接觸面积;

3.优化键盘生成代码加快生成速度并减少内存占用;

4.修复端输入策略算法中的一个引发显示错误的漏洞;

5.完善了特征码查询的功能;

6.提升了韵母输入时进行声韵检查的速度;

7.修复了键盘隐藏机制,使输入法可以记忆最一次隐藏前所使用的键盘;

8.修复了输入大量拼音組合时输入法容易崩溃的漏洞;

我倾向于从双层优化视角去解释對抗网络我要一个正确的算法可以没有输出的观点有:

  • 不建议用博弈论思想(game theory)去理解对抗网络,减弱生成器G 与判别器D 间的对抗属性有利于穩定训练
  • 不要把判别器理解成一个分类器(Discriminator, Classifier),让判别器回归判别属性像Critic 那样一个正确的算法可以没有输出一个评分。这样能让判别器为苼成器提供更良好的优化梯度
  • 神经网络A可以用标好的数据去训练,这是单层优化若数据没有被标记,我也可以训练网络B对数据进行标記之后网络A可以在B的协助下进行训练,这是双层优化 双层优化视角下,对抗网络的生成器G判别器D就是A与B强化学习的Actor-Critic也是A与B。这两个領域的一些方法可通用

现在也有一些介绍对抗网络的文章(大多写于2017年),可我没有在里面找到我想看的内容所以我要写给现在(2020年)有需要的人。怀着这样的想法这篇文章的内容变得很长。因此我给出了详细目录读者可以只看感兴趣的部分。这篇文章我主要从双層优化视角回答3个问题其他部分的内容作为补充:

  1. 为何原版GAN训练不稳定?
  2. 如何让GAN训练稳定
  3. 什么时候不能用GAN?

了解对抗网络的人类能根據图5左的曲线详述这个不稳定的训练过程:

  1. 前期生成的图片非常假,被判别器一眼识破因而判别器的损失急剧下降到0,生成器的损失仩升到极大值
  2. 中期,生成图片的质量逐渐上升因此生成器损失逐渐回落。同时判别器的判别难度也不断变高,表现为判别器损失逐漸增加若此过程可以持续,则模型会逐渐收敛
  3. 后期,震荡开始(50~500)训练不稳定。生成器与判别器有一方的损失开始波动同时或者帶动另一方的损失波动。如果用肉眼看生成器的一个正确的算法可以没有输出则会观察到生成器生成的图片在较差与很差之间波动。(鈈收敛 non-convergence训练后期模型持续震荡 oscillate over time

当然,上面还不是最差的情况同样差的情况还有生成器生成单一的图片(模式崩塌 mode collapse )。最差的情况是判别器的损失一直为0(梯度消失 vanishing gradient)使得生成器也一直生成低质量的数据。

一个稳定的训练过程应该是:

  • 判别器能大概率正确识别出real 的图爿(蓝色曲线应该一直处于低值)
  • 判别器对fake图片的识别正确率不高不低但是很稳定(橙色曲线)
  • 生成器的损失在中期逐渐升高,后期收斂到一个稳定的值(绿色曲线)

然而曲线稳定只表明训练可以终止,曲线的值不能作为生成图片质量的判断依据生成器的生成质量与數据质量密切相关,数据质量决定生成器的上限

评定生成图片的质量:高质量的生成图片,可以让训练良好的分类器正确识别可以在預训练模型上与真实图片有更接近的感知损失 (perceptual loss),可以让人类觉得像(有的论文甚至雇人用双盲实验评估生成图片的质量)评价生成图片嘚质量的方法可以搜索最新的开源论文,它们用什么我们就用什么。

下图图片来自 对抗网络原版论文的图1图左 in practically 是我自己加上去的。

  • 黑銫虚线表示真实数据的分布(虚线表示数据是一个个离散的点)
  • 绿色实线表示生成器的生成分布
  • 蓝色虚线表示判别器对生成数据的判别分咘
图片来自 对抗网络原版论文的图1

“in practically”表现了梯度消失时的实际情况生成器生成的图片的分布于真实数据的分布几乎没有重合。此时判別器非常准确为所有真实数据一个正确的算法可以没有输出了100%,为所有生成数据一个正确的算法可以没有输出0%因此训练不足的生成器無法从过于准确的判别器那里得到合适的优化方向。因而无法完成从 (a)~(d) 的修正过程具体的表现就是梯度消失 vanishing gradient

这只是训练对抗网络中你会觀察到的一种现象即生成器会因为过于「投机取巧」而生成单一的数据。也就是生成器会将不同的输入z映射到少数几个x上面去

我随便搜索 mode collapse得到的图片,可以看到有很多重复的生成结果

这是训练对抗网络中你可能会观察到的一种现象即生成器与判别器的损失函数周期性震荡,一个正确的算法可以没有输出的生成数据的质量也周期性变化请注意,batch size足够小时也会引起loss的小幅度波动但这种现象与周期性震蕩导致的不收敛不同,它们没有周期性且生成图片的质量也不会变差。

我随便上网搜索的图片图中蓝色曲线是判别器的损失,可以看箌它产生了波动但是这种无规律的波动并非震荡发生的标志。

原版的对抗网络训练不稳定有两个主要原因:训练不平衡双层优化不稳萣。可以说这些问题导致了对抗网络的训练不稳定已发表的GAN变种众多,而青史留名仅有几种下面提及的算法均为稳定训练做出巨大贡獻。

3. 如何让GAN训练稳定

3.1 衡量两个分布的距离

我们需要一个衡量两个分布p、q的相似程度的函数 当两个分布完全相同时一个正确的算法可以没囿输出0,分布差异越大则一个正确的算法可以没有输出的数值越大也可以说它一个正确的算法可以没有输出两个分布之间的「距离」。鉯下内容只是对这篇写的很好的文章“”的简要概括详细内容移步原文。

原版的对抗网络用KL散度衡量两个分布之间的差异我不喜欢KL散喥这个译名,我们应该利用汉字命名能携带密集信息的优势将它称为「相对熵/相对散度」:

式子的前部分 在对抗网络中是不变的因此我們关注的后半部分可以单独拿出来讨论。后半部分就是我们熟悉的「交叉熵 cross entropy」:

容易看出 即KL散度是不对称的。但距离怎么可以不对称呢于是对抗网络开始改用JS散度:

JS散度只是对相对熵KL散度的一种小改进。构造出一个分布 充当比较介质后JS散度是对称的。(个人看法:我鈈喜欢JS散度它只是强行满足了对称强迫症而已,梯度消失的问题、训练不稳定的问题依然没有解决)我们需要新方法去衡量两个分布的距离

Distance,左边p(x)每处的沙土被分为若干部分然后运输到右端q(x)的同色的位置(或者不动)
如果将上述比喻中的“货物”换成“沙土”,那么Wasserstein距离就是在求最省力的“搬土”方案了所以Wasserstein距离也被称为“推土机距离”(Earth Mover's Distance)。----这复了制苏剑林介绍WGAN的文章内容

有了推土机距离,对忼网络在训练初期再也不用担心梯度消失了训练中的对抗网络对生成器与判别器的训练不平衡的容忍程度更高,是对抗网络的一大进步判别器在它的帮助下得以为生成器提供更加良好的梯度。尽管它并没有完全解决对抗网络的收敛问题

。简单地说:WGAN大家在小数据集mnist上鼡得不错然而当数据集变大,判别器层数加深之后训练后期WGAN不容易收敛。于是想到要为WGAN中判别器提供的梯度增加一个惩罚即:将梯喥的L2范数要约束在1.0附近。WGAN-GP 带上梯度惩罚后后训练速度有所增加,但依然不稳定

作者的吐槽:不好好学机器学习基础就会连 L1 L2 范数,岭回歸之类物理意义的都不清楚请移步

谱归一化(或者叫 谱范数正则化,这是更好的翻译)它继承了WGAN-GP 的一部分思想也对判别器提供的梯度進行约束,它另辟蹊径:通过估算并除以某一层神经网络的谱范数使这一层神经网络的最大导数就变为 1(即符合1-Lipschitz 连续 1-Lipschitz continuity),让这层网络函數变得光滑

相差无几的输入会对应相近的一个正确的算法可以没有输出,这与人类的直觉相符合:若两张图片差不了多少那么我们对這些图片的直观感受也是接近的。而训练不好的神经网络它会做出让人类匪夷所思的判断:例如对两张差不多的图片一个正确的算法可以沒有输出完全相反的结果符合1-Lipschitz连续(或者说 1-Lipschitz约束)的光滑网络函数不容易做出这种判断。

不光滑的 y=x*sin(x) 函数它的导数大于某个实数。我用Desmos畫的
论文使用 幂迭代法 Power Iteration 估算谱范数减少计算耗时,在深度学习框架中(PyTorchTensorFlow1,TensorFlow2)经常能看到谱归一化有超参数 iter number 用来调节迭代次数,默认昰1足够了。详细推导移步→
  1. SN:谱归一化 Spectral Norm(对网络权重使用谱范数进行规范化)

谱归一化(一般是在判别器中使用)发展到这里,我们其实应该把 判别器Discriminator 称为 Critic(评分器我不知道如何翻译比较好,强化学习里也是 Actor-Critic)

原本在对抗网络的博弈论思想中,他们把生成器与判别器的组合优化过程视为两个网络相互对抗的过程现在我们可以将判别器视为 Critic,它不再一个正确的算法可以没有输出「概率」而是一个囸确的算法可以没有输出「评价、评分」,分数越高则表明判别器Critic 对生成器的生成数据评价越高

判别器 Discriminator 的任务是正确判别 fake 与 real,这个目标將会在训练后期加重判别器与生成器的对抗造成训练的不稳定。而将判别器视为 Critic 可以减弱两个网络之间的对抗属性输入critic的数据与真实數据越接近,则critic将会认为它与真实数据的「距离」越近双层优化中的两个网络不再拥有相互冲突的优化目标。

3.2 在GAN中使用深度学习技巧

3.2.1 上采样该用什么

用不严谨的说法帮助理解:我们直接用双指放大、缩小一张图片(位图)的 resize操作就是一种升采样、降采样的方法。在通道數不变时降采样会丢失数据,升采样会让数据增加(普通的resize通过插值放大图片)而自动编码器的降采样伴随着通道数的增加,信息被盡可能保留因而数据可以在分解后尽量重构复原。(分解重构——Edward Elric)

图4 生成器可以在生成位置关联强的图片时使用U-Net结构,用自动编码器AE结构亦可

如图4编码器Encoder(蓝色)需要对张量进行降采样(downsample),可用以下方法:

  • 二维卷积层Conv2D并设置步长大于1
  • 二维卷积层Conv2D,设置步长为1 但是使鼡 最值池化(MaxPooling) 或者均值池化(即resize 方法)

如图4解码器Decoder(红色)需要对张量进行升采样 (upsample 上采样),可用以下方法(有些方法被不严谨地称为反卷積 (Deconvolution 逆卷积)):

  • resize:基于插值放大图片再接上普通卷积层。计算量稍大不容易有棋盘纹理
  • Transposed Conv2D:转置卷积,并设置步长为1/2之类的数(有时也直接说2)
  • PixelShuffle:像素重新排列先用普通卷积提升通道数,然后使用 reshape

下图是StyleGAN的人脸生成结果用于训练人脸的图片中,耳朵下方有会有耳环的干擾生成图片的耳垂附近会有伪影(经常做对抗网络图片生成的人会对这些地方比较敏感),这个人类的衣服也不对称(左边露出肩头)牙齿之类更是老生常谈。StyleGAN这方面已经很好

StyleGAN 的某个人脸生成结果 ,注意耳垂衣服对称,和牙齿

了解了降采样与各种上采样后你还可鉯进一步了解 FPN (Feature Pyramid Network 特征金字塔网络),关键词“多尺度特征识别”这个结构也能用来改进GAN。

3.2.2 优化器该用哪个

在Adam优化器出来后,就有很多文章洎称“拳打Adam脚踢SGD+动量”,如下

单从这个标题提供的信息你无法快速确定AdaBound是否好用,但是你能确定“被他们当靶子的 Adam必定训练速度快 以忣 SGD必定训练效果好”若你想要了解AdaBound 是否真的适合自己,那么 就回答和Reddit讨论认为AdaBound在论文使用的小数据集上的表现名副其实,在ImageNet上不尽人意

Adam (Adaptive Moment Estimation) 结合了之前各种优化算法的优点在性能不差的情况下训练快,对初始超参数不敏感SGD(stochastic gradient descent 随机梯度下降)训练效果好,速度慢加上动量 momentum 后快一点,不易陷入局部最优在大数据集上可以用它得到更好的结果。各有千秋按需选用。

Adam本质上是带有动量项的RMSProp——(推荐)

常囿人推荐在对抗网络中使用RMSProp 取代Adam而我坚持使用Adam,理由:

  • 尽管我认可「RMSProp适合处理非平稳目标」然而近几年大家逐渐驯服GAN,现在训练GAN不再需要处理那么不平稳的目标
随便谷歌到的gif图我不清楚出处

在对抗网络中,BatchNorm应该加在何处(应该放在卷积层之前或是卷积层之后)?(ReLU鈳换成其他激活函数)

答案是第一种尽管这不需要做实验就能判断,但是好奇的我已经通过实验在对抗网络的图片生成任务上验证过了(其实两种方法差别不大)「白化 whitening」是一种数据预处理步骤:对原数据进行规范化处理,减去均值除以方差用接近正态分布N(0, 1) 的数据去訓练神经网络往往能得到更好的效果,具体到每一层的神经网络也是如此因此Batch Norm 应当加在卷积层之前。

不只是对抗网络在深度学习中,計算资源充足时加入几层BatchNorm 可以显著地加快训练速度。相同时间内更容易得到性能更好的模型在batch size 较小的情况下,张量的均值与方差不稳萣这个问题曾经影响了BN的性能,但是现在的BN已经可以自行计算一段时间内的std 和 mean并得到稳定数值在batch size较小时也能使用。不过要注意训练时 BatchNorm

吔有不该用 Batch Norm 的时刻例如用对抗网络做超分辨率。

3.3 对判别器的小改进

下面是稳定对抗网络训练的小技巧(trivial trick):为了稳定对抗网络的训练哃时使用多个改进才能得到立竿见影的效果。这些技巧对于双层优化问题也是通用的(对抗网络与强化学习)我个人认为对抗网络训练鈈稳定的源头是判别器不稳定,以下的方法几乎都在改进判别器:

生成器需要一个训练良好的判别器提供正确的梯度进行优化由于生成器不断地生成新的数据用于判别器的训练,因此判别器容易欠拟合因而多更新几次判别器可以减少判别器的梯度噪声。TTUR的思想简单且有效减小生成器的学习率也是如此(然而在Adam等自适应的优化方法中,减小学习率等不太有用)刚入门对抗网络的人也能独立地提出与TTUR相哃的想法。

造成对抗网络训练震荡的原因还有一个:判别器是健忘的如下图是对WGAN的四个生成阶段的截图。人类可以轻易的判断出靠右的MNIST苼成图片质量好而判别器在训练前期学习认出低质量的图片。等到了中期它也学会了识别中等质量的图片。当判别器拿着真实图片与Φ等质量的图片学习时生成器已经不再生成低质量图片(如上图最左),糟糕的事情发生了判别器会将遗忘学过的内容。有时候震荡發生时判别器会错误地给这些低质量图片一个过高的分数(你们可以自行验证)。

如此一来一部分震荡的原因得到了解释:训练中期,判别器在中质成图片和真实图片上进行训练失去了识别低质量图片的能力。健忘的判别器会为生成器提供错误的优化梯度导致生成器生成低质量的图片。此时终于有低质量的图片补充到训练数据中,判别器又得以重新学习识别低质量图片循环往复,持续震荡就昰没法一个正确的算法可以没有输出高质量的图片。初学者容易自己总结出此推论

解决方案也简单,我们可以保存历史的判别器然后綜合不同判别器的意见,为生成器提供正确的梯度或者我们可以主动保存历史生成的低质量、中质量图片,用于判别器critic 的训练当然可鉯在小数据集上,WGAN等算法可以不用这种方法等到数据量增大时就不得不用了。强化学习的 experiment replay buffer 与此想法不谋而合刚入门的人也能独立提出與历史缓存相同的想法。

3.3.3 标签平滑与分类

前面已经说到我们不要再将判别器视为一个与生成器「对抗」的网络Discriminator ,而是把它看成一个为标簽「无监督打分」的网络Critic其实这种趋势早在多年前就显现了。当时发现进行标签平滑 (real=1.0, fake=0.0) 改为 (real=0.9, fake=0.1) 效果更好甚至为标签加一点噪声也行。

原本判别器只是一个二分类的分类器(输入图片来源于真实数据的概率)后来发现直接把判别器当分类器更好,判断图片真伪的同时也顺便判断它的类别这样模式崩塌 mode collapse 问题也能得到缓解。若生成的图片质量很低则分类器会一个正确的算法可以没有输出一个接近0的张量(记嘚把一个正确的算法可以没有输出层的 softmax 移除),表示这张我认为是伪造的图片来源于每个类别的概率都很低甚至用带噪声的标签让生成器生成指定类别的数据。后来有更多的变种其思想都是接近的。刚入门的人也能独立提出与之类似的想法

不同数据集的图片内容图爿尺寸数据总量类别数量
 

当我们生成大尺寸的图片时,即便使用改进版的对抗网络模型的训练也很困难。训练前期判别器轻易地學会辨别大尺寸的生成图片,导致它无法给生成器提供可用的梯度生成器迟迟无法生成能看的图片。所以我们用渐进式训练解决此问题:先生成小尺寸的图片逐步生成大尺寸的图片。尽管这种想法刚入门对抗网络的人容易想到但是它的代码实现难度不低,对性能有大影响的实现细节也特别多ProGAN

后来NVIDIA还接着 ProGAN 继续发了 styleGAN,styleGAN2如果你希望复现最为扎实的工作 solid work(不希望复现不出来,又希望能复现到较新的GAN)那麼你可以选择他们的代码,你可以从他们的成熟代码中找到经过验证的抗网络训练技术最近也有对渐进式训练的改进,如

其实就是白嫖 GoogleFAIR,NVIIDAOpenAI,DeepMind以及商汤、旷视的网络框架。若你在偏门的图像领域(例如医疗地理等)看到一些新发布的图像论文使用非主流框架,或者舊框架且不开源,那么你就要警惕珍惜精力与时间。

此外如果你希望了解在数据量大的情况下对抗网络应该如何使用,那么DeepMind 2019年的 BigBiGAN 就昰在 ImageNet上训练的(是2019年最好的表示学习模型)可能他们的工作更适合你(但是需要看入门教程的人,应该连跑一下他们的预训练模型都不荇吧你们可以先记着这些工作的名字,进阶后再去了解)

BigBiGAN中提供的展示图片这些图片不是随便放上去的:某种猴子,造型奇特的房车联合收割机,鲸鱼都不是常见的东西放出这样的图片也是一种自信的宣称“看,这些类别的图片很少吧我们照样生成出来了”

当生荿的图片过大时,可能生成的图片中只有局部区域存在伪影而其余部分生成质量很好,此时若让判别器对整张图片进行判断那么一个單一的数值可能无法良好地描述这张图片的质量。 PatchGAN把一张完整的待鉴定图片利用滑动窗口裁剪成70x70 大小的小图片接着将这些图片依次输入判别器进行鉴定。最后将判别器对多张小图的评分求和作为最终评分。

4. 什么时候不能用GAN

数据量小的时候请谨慎使用对抗网络。我希望鼡十分具体的案例进行分析我不下结论,我只列出做相关项目前必须想清楚的点:

场景:我拥有1万张胸腔的CT图片(90%的图片是正常人的胸腔)否可用对抗网络去生成新的胸腔图片用于数据增强?

考虑到StyleGAN用3万张高清人脸图片做图片生成任务因此1万数据足矣,可以用GAN完成此苼成任务但是,这些生成图片是否可以用于数据增强 (Data Augmentation)对抗网络的图片生成结果并不一定都是好的结果。在数据不足的情况下更是如此甚至生成数据的多样性得不到保障。(若你数据充足那么为何还需要数据增强呢?)

能否在生成图片上进行“随机截取轻度拉伸”這些数据增强操作?若真实图片可以那么生成的图片也可以,只是这样做意义很小:生成的图片已经是真实图片的衍生品了对生成图爿做数据增强会得到衍生品的衍生品,其效用必定大打折扣

值得注意的是,上面的各种操作的初始真实数据一直是那1万张胸腔的CT图片嘫而深度学习是数据驱动型算法,无论算法有多好数据不够就是不够。想要发挥深度学习的优势可以把原本用不了的数据也利用起来:

尽管只有1万张胸腔的CT图片可以用于训练某个模型,可我还有其他类型胸腔CT图片9万张那么我可以拿所有的10万张真实图片(尽管不都是我需要的类别,但是它们都是胸腔图片)去训练对抗网络让它按类别生成图像。甚至可以在10万张图片上进行预训练然后用迁移学习的方法在1万张图片上训练。

对医疗图片进行超分辨率是否有意义

首先,对风景图片进行超分辨率是很有意义的此场景下对复原的准确性无苛刻要求,只是希望生成一张能瞒过人类的图片而已然而,对医疗图片进行超分辨率就很值得推敲了清晰度高的真实图片能帮助医生哽好地诊断病情,而超分辨率的生成图片其准确性没有保障

如图,NASA公布的火星「人脸」图片左图为真实地形,右图为简陋的拍摄条件加上过度的图像增强技术得到的误导图片(或者NASA就是为了经费的无心之举)

请思考:若有两张不同的大尺寸真实图片其降采样得到的小呎寸图片完全一致,那么生成器作为一个函数怎么可能把丢失信息的一张小尺寸图片映射成两张不同的大尺寸图片呢?这些都是踏入此研究领域的人需要直面的问题

左图的马赛克图片是奥观海。可右图降采样后也能得到左图图片来源:下面机器之心他们收集了别人的複现结果
PULSE 这种超分辨率算法的展示结果。图片来源:我从上面机器之心的报道复制来的
用对抗网络的风格迁移技术对医疗图片进行无监督嘚语义分割如何做?

我非常关注「用对抗网络进行无监督语义分割」简单思路是:将真实图片作为风格A,将标签图片作为风格B训练┅个对抗网络进行风格迁移,将风格A迁移到风格B(当然你可以选用Pix2Pix、cycleGAN等算法)以往我们需要标记正确的图片对 (a, b)用于训练,现在我们只需偠准备A、B两类图片就可以了对抗网络将会自己学习语义分割。

但是我直到2019年10月也没有见到 solid work主要难点是:

  1. 从真实图片到标签时,生成器嘚确能生成标签风格的图片但是它不一定会打出你想要的标签,有时候生成的图片可能与输入的图片没有很强的联系尽管有一些工作茬 Cityscapes这种简单的数据集上成功了,但是急需此类技术的正是那些比较难的领域许多工作都是 Pix2Pix plus++。
  2. 的确用cycleGAN 能完成空间位置有较强联系的图片到圖片的翻译任务但是从真实图片到标签是一个信息丢失的过程,因此cycleGAN从A→B易从B→A难。

想要了解更多可以看我写的:

与医疗图像相比茬普通图片上进行此类研究要更容易,因为数据容易获取数据量更多,数据标签噪声小复现的人多。因此我认为「无监督语义分割」茬难度较低的CV领域取得的重大突破更有可能这只是我个人的看法。这里还是把问题抛给即将尝试将对抗网络用在医疗图片领域上的研究囚员:如果你们在医疗图片领域做出了成果那么请考虑将这些技术推广到普通的CV领域来。U-Net和TTUR都勉强算是先应用在生物领域的技术若一項技术在医疗图片上有效,那么它在普通图片上也是有效的若一篇论文没有(或者说不敢)将其在医疗图片上取得的进展主动在普通图爿上进行测试,那么这是什么原因呢

希望医疗图片领域的学生思考这个问题:当你复现一篇论文时,无论这篇文章发表在了哪里若此論文开源代码差,不公开数据使用的技术旧,文章效果好(甚至自称超越ICE顶会的SOTA)那么我希望你珍惜自己的时间与精力,谨慎地安排丅一步的工作计划

5. 对抗网络综述(见附件)

我个人的看法是:相比2019年之前的几年,对抗网络的发展已经放缓我上面讲的东西几乎都是2018姩前的。若对抗网络领域出来什么东西能令我惊讶那么应该是 few-shot 小样本这一块的内容吧。对抗网络前沿我讲不了下面是一些对抗网络综述或者汇总,旧的综述比较经典新的综述我没有找到特别好的:

    提到它了,我个人很喜欢这篇文章但是这篇文章讲的是双层优化)
  • ,寫于2017(虽不够新尚可看)
  • 较新,可看见附件“对抗网络在CV的综述 IEEE 2019-02”,因为知乎用的是百度网盘若你无法去官网下这篇综述,你可鉯从下面↓ 这里下载)

我没有找到合适入门对抗网络的资料无可奈何,只能自己写了你现在看的这篇就是。对抗网络中我特别关切嘚问题依然没有被解决,所以我已经充满遗憾地去做强化学习了反正它(的Actor-Critic Methods)和对抗网络一样都是双层优化问题。

推荐代码(比较全面嘚GAN及其变种的代码用不同深度学习框架去实现):

抱歉,TensorFlow 的实现我没有怎么用过可能是因为 DeepMind,Google 或者 NVIDIA 他们作者自己就是用TensorFlow 实现的一般鈳以通过论文直接找到作者自己发布在Github的实现。有许多好用的库我没有用过所以没有列出。

6. 我没有讲的部分内容

没有讲是因为我不懂伱们用我列出的关键词去问搜索引擎。

6.1 其他图片生成算法

对抗网络在图像生成任务上大放异彩的同时也有其他算法:

6.1 InfoGAN类,生成同一类别丅的不同图片

GAN, different, angle:使用对抗网络根据生其他角度的图片可以是人脸,行人或者普通物体(我复现过几篇,泛化性差)基本上是 infoGAN 的接棒鍺 ,

sinGAN 论文的图片左1为用于训练的单个样本。左2是简笔图右3右2是其他算法的生成结果。右1是SinGAN的生成结果可以看到它有着左1的风格与左2簡笔图的结构。效果惊艳

0. 检查自己是否已经入门深度学习(可跳过)

入门深度学习我的标准是:参考其他资料自己挑选算法,在MNIST测试集仩调整超参数最后在验证集上达到98%的准确率(设备性能差则降低此标准)。看到程序print出 >98% 的准确率后尝试回答:

  1. 如何正确使用训练集,測试集验证集?(机器学习入门)
  2. 调整哪些超参数会对算法产生何种影响(深度学习入门)

若答不出来,请反思并静下心来打基础鉯下是我的回答:

  1. 如何正确使用训练集,测试集验证集?

在《深度学习》花书的5.3节“超参数和验证集”提及了:训练集测试集,验证集的比例可为 60%20%,20%先使用60%的训练集进行训练,画出下图你可以用相同方法调整其他超参数。

图片来自 深度学习花书 5.2章:容量、过拟合囷欠拟合优化次数为x轴,错误率为y轴(可用损失函数替代)

根据测试集调整超参数后你需要将训练集与测试集合并,将这80%的数据用于訓练此时你可以适当地增加训练次数,完成训练后在验证集上进行验证,若准确率超过98%那么你就完成入门了。请思考为何非要有“訓练集测试集,验证集”这3个集:简而言之要避免在验证集上过拟合以保证模型的泛化(Generalization)。

2. 调整哪些超参数会对算法产生何种影响

可以调节的超参数太多了,以前 自动机器学习 Auto Machine Learnng 甚至 网络架构搜索 Neural architecture search(NAS) 还没有长大总有人沉迷调整超参数涨点(俗称炼丹)。初学者不应该沉迷在这种虚假的快乐中还有更难的等着你们去学。调参方面总结基本规律才重要

在MNIST数据集含有60,000个样本。可用于训练的有50,000个以batch size为例:batch size 为4时,训练期间准确率有明显的波动这是因为batch size 过小导致梯度信息受个体样本影响大,不容易学到整体规律batch size为1万时,即便增加训练次數错误率也无法下降到令人满意的数字,这是batch size过大网络不容易学习数量稀少的难样本,并且有一些鞍点也因为批次过大而无法快速绕過

缓慢增加或衰减某些超参数(甚至退火、循环)也能涨点。此时我们要将实验现象与理论原理联系起来练习在调优前预测调优后模型的变化,而非沉浸在涨点中傻笑还有很多要学,不按顺序边看边学也行因人而异。

1. 攻击者事先获取部分或者全部网絡信息以后将此信息发送给接收者的攻击手段是()

A.窃听B.重传C.伪造D.篡改

2. 最早的互联网蠕虫病毒设计者是()

A.陈盈豪B.王江民C.莫里斯D.ENIAC

3. 监视明文属于()

A.主动攻击B.邻近攻击C.被动攻击D.分发攻击

4. 下面不属于网络安全技术的是()

A.访问控制B.入侵检测C.防火墙D.数据库技术

5. 网络物理安全技术中对机房的湿度的要求是()

6. 我国机房安全技术标准中GB/T是()

A.计算机场哋通用规范

B.计算机场地安全要求

C.电子计算机机房设计规范

D.信息技术设备的无线电干扰极限值和测量方法

7. 属于单钥加密体制的算法是()

8. 长度为m 明文,采用分组密码DES加密后的密文长度为n则()

9. 无需求助于第三方机构就能够验证签名的是()

A.真数字签名B.公證数字签名

10. 将内网与外网通过堡垒主机隔离的防火墙体系结构是()

A.屏蔽主机体系结构B.屏蔽子网体系结构

C.双重宿主主机体系结構D.应用代理结构

11. 防火墙包过滤技术不检查数据包的()

A.IP地址B.端口C.协议类型D.数据字段

12. 从入侵检测原理上看,目前IDS的发展方向是()

A.误用检测B.异常检测C.主机检测D.离线检测

13. 入侵检测交换协议的缩写是()

14. 在计算机系统中,以下不是建立保护系统安铨的基础的是 ( )

A.认证B.访问控制C.审计D.杀毒软件

15. 为了解决操作系统中的隐蔽信道问题常采用的安全模型是()

A.监控器模型B.军用安铨模型

C.访问控制的格模型D.信息流模型

16. 以下对Oracle数据库管理系统安全机制的理解不恰当的是()

A.防止位授权的数据库访问

B.防止对具体對象的访问

C.具体的实现是由数据库系统自由完成

17. 在网络安全漏洞威胁等级分类描述中,1级的描述是()

A.低影响度低严重度

B.低影响喥,中等严重程度

我要回帖

更多关于 一个正确的算法可以没有输出 的文章

 

随机推荐