Brief Guide
项目 | 内容 |
---|---|
这个作业属于哪个课程 | |
这个作业的要求在哪里 | |
我在这个课程的目标是 | 获得机器学习相关的完整项目与学习经验;通过与人工智能行业的大牛们聊天了解行业不同方向的发展以便进行职业规划;为转CS积累基础知识并获得相关课程的成绩 |
这个作业在哪个具体方面帮助我实现目标 | 通过思考MNIST功能扩展的不同情况,更全面的考虑人工智能算法与数据与需求之间的关系 |
作业正文… | |
其他参考文献… |
Main Homework
思考题1
如何识别不合法(既非数字又非符号)的输入?
- 设置非法阈值,即判断 “某一字符是一数字或符号” 的概率小于某一设定值时,认定该字符为非法字符。
- 优点:实现简单,能针对不同的数字、字符设定个性化的阈值,且更便于人为控制界限值。
- 缺点:需要反复跑模型、测试阈值的最合适值,任务量非常大、速度慢,且需要人工进行判断。
对该字符的图像进行增删像素点,判断其对应概率最高的几个数字/字符概率的变化率。
即令某字符 \(x\) 对应\(n\)个数字/字符 \(x_1 x_2 x_3 ... x_n\) 的概率分别为 \(p_1 p_2 p_3 ... p_n\) ,对该字符图像像素点进行增减后,其概率的变化率为\(\frac{\partial {p_1}}{\partial t} \frac{\partial {p_2}}{\partial t} \frac{\partial {p_3}}{\partial t} ... \frac{\partial {p_n}}{\partial t}\)。
- 优点:更便于程序根据变化率自己判断是否应当把该字符判断为非法字符。
- 缺点:对于某一些写法比较多样的数字/字符效果不是太好。
思考题2
如何设计该计算器应用以识别下列元素:
A. 更多的符号,比如sin函数 - 先分开按一个个字符识别,如将sin
一个一个按照 s
/i
/n
识别。 - 若相邻字符组合起来可以与函数名库匹配,则综合考虑其是某一函数名的概率。如 sin
分开识别时可能会被识别为 5
/i
/n
,这种时候由于 in
可以与函数名 sin
中的一部分匹配且顺序相同,此时将 5in
连在一起判断其是 sin
的概率 B. 复杂的表达式结构(上下结构),比如指数\(e^x\),分数\(\frac{\pi}{2}\) - 将每个字符投影在y轴上,若投影重合则为同一字符,若不重合,则为表达式(特化,容易误判) - 计算出每个字符的中心点坐标与该字符的面积,定义一个指标分离度
用来表征两字符之间的紧密关系,分离度
与中心点间距离和二者的面积都有关(通用,需要反复尝试分离度
阈值) C. 更复杂的表达式结构(包围结构),比如平方根\(\sqrt{a^2+b^2}\) - 针对根号做专门的模型训练,先匹配搜寻根号,若找到,则对做投影,与根号x轴y轴投影都重合的一起进行运算 - 对可能出现根式的地方进行投影,x轴y轴投影所构成的长方形面积最大的字符去掉后,若还能以较高的概率匹配为合法字符,则去掉的部分很有可能为根号