super_banner_728x90

domingo, 3 de outubro de 2010

Breve introdução ao Reconhecimento Estatístico de Padrões

Este post foi retirado do cap. 1 do livro "Pattern Classification", 2ª edição, de Richard O. Duda, Peter E. Hart and David G. Stork (ed. Wiley). As imagens e o exemplo foram usados com o consentimento do autor.

----------

A facilidade com que reconhecemos um rosto, compreendemos palavras pronunciadas, lemos caracteres escritos a mão, identificamos as chaves do carro no bolso pelo tato, e decidimos se uma maçã está madura pelo seu cheiro, dá uma falsa ideia do quão complexo é o processo por trás do Reconhecimento de Padrões. Reconhecimento de Padrões -- o ato de obter dados brutos e executar uma ação baseado na categoria do padrão -- tem sido crucial para nossa sobrevivência, e com o passar de milhares de anos temos desenvolvido sistemas cognitivos e neurais altamente sofisticados para estas tarefas.

É natural que desejássemos planejar e construir máquinas que possam reconhecer padrões. De reconhecimento de fala automático, identificação de impressões digitais, reconhecimento ótico de caracteres (o famoso OCR), identificação de sequências de DNA e muito mais, é claro que reconhecimento de padrões através de máquinas que seja confiável e acurado seria imensamente útil. Além disso, ao resolver os milhares de problemas necessários para construir tais sistemas, ganhamos um conhecimento mais profundo e apreciação por sistemas de reconhecimento de padrões no mundo natural -- mais particularmente em humanos. Para algumas aplicações, tais como reconhecimento visual e de fala, nossa abordagem deve de fato ser influenciada pelo conhecimento de como estes problemas são resolvidos na natureza, tanto nos algoritmos que empregamos quanto no planejamento de estruturas de hardware para propósitos especiais.

Um Exemplo
Para ilustrar a complexidade de alguns dos tipos de problemas envolvidos, vamos considerar a seguinte situação. Suponha que uma peixaria queira automatizar o processo de organização dos peixes por espécie a partir de uma esteira rolante. Como um projeto piloto, decide-se tentar separar salmão de robalo através de sensor ótico. Configuramos uma câmera, obtemos algumas imagens como amostras e começamos a notar algumas diferenças físicas entre os dois tipos de peixe -- comprimento, claridade, largura, quantidade e formato das barbatanas, posição da boca, e por aí vai -- e estas sugerem características a serem exploradas para usarmos em nosso classificador. Também notamos alguns ruídos e variações nas imagens -- variações na luminosidade, posição do peixe na esteira, e até mesmo falhas por problemas eletrônicos da câmera.

Dado que existem diferenças reais  entre as populações de robalo e salmão, vemos esses como tendo diferentes modelos -- diferentes descrições, que são tipicamente matemáticas em sua forma. A abordagem e o objetivo globais em reconhecimento de padrões são fazer hipóteses sobre as classes desses modelos, processar os dados obtidos para eliminar ruídos (não devidos aos modelos), e para qualquer padrão detectado escolher o modelo que corresponde melhor. Quaisquer técnicas que favorecem este fim deveriam estar na caixa de ferramentas conceitual do criador de sistemas de reconhecimento de padrões.

Nosso sistema protótipo para realizar esta tarefa bastante específica deve ter a forma mostrada na Fig. 1.1. Primeiro a câmera captura uma imagem do peixe. Depois, os sinais da câmera são preprocessados para simplificar as operações subsequentes sem perder informação relevante. Em particular, devemos usar a operação de segmentação, na qual as imagens dos diferentes peixes são separadas entre si e do fundo da imagem. As informações de um único peixe são enviadas para um extrator de características, cujo propósito é reduzir os dados medindo certas "características" ou "propriedades". Essas características (ou, mais precisamente, os valores dessas características) são então passados para o classificador que avalia as evidências apresentadas e toma uma decisão final quanto às espécies.

Características
Suponha que alguém na peixaria nos diga que um robalo é geralmente maior que o salmão. Isso, então, nos dá tentativa de modelos para o peixe: robalo tem um tamanho típico, e é maior que o do salmão. Então, o tamanho se torna uma característica óbvia, e devemos tentar classificar o peixe meramente pelo tamanho, verificando se o tamanho [; l ;] de um peixe ultrapassa ou não um valor crítico [; l^* ;]. Para escolher [; l^* ;] deveríamos obter algum projeto/design ou amostras de treinamento dos diferentes tipos de peixe, (de alguma forma) fazer as medições dos tamanhos e olhar os resultados.
Suponha que obtenhamos os histogramas da Fig. 1.2. Podemos ver na figura que não é possível afirmar que o robalo é sempre maior que o salmão. Isso acontece, em média; mas utilizar somente esta características para tentar distinguir os dois padrões acarretaria em um grande erro, seja qual fosse a escolha de [; l^* ;].

Desanimados por esses resultados não promissores, nós tentamos uma outra característica -- a claridade média das escamas dos peixes. Agora temos que ser cuidadosos em eliminar variações de luminosidade, dado que estas podem confundir os modelos e corromper nosso novo classificador. Os histogramas resultantes, mostrados na Fig. 1.3, são muito mais satisfatórios -- as classes são separados bem melhor.


Até agora temos assumido implicitamente que as consequências de nossas ações são igualmente custosas: decidir se um peixe é robalo quando de fato é salmão é tão indesejável quanto o oposto. Tal simetria no custo ocorre com frequência, mas este não é sempre o caso. Por exemplo, como uma companhia frigorífica de peixes devemos saber que nossos clientes aceitam mais facilmente pedaços de salmão em uma lata de robalo do que o contrário. Se desejamos permanecer no negócio, devemos ajustar nosso limite de decisão para evitar contrariar nossos clientes, mesmo que isso signifique haja mais salmão em latas de robalo do que o contrário. Nesse caso, devemos mover nosso limite de decisão [; x^* ;] para valores menores de luminosidade, reduzindo assim a quantidade de robalo classificado como salmão (Fig. 1.3). Quanto mais os clientes se opuserem a comprar robalo rotulado como salmão -- i.e., mais custoso é este tipo de erro -- menor devemos escolher o limiar de decisão [; x^* ;] da Fig. 1.3.

Tais considerações sugerem que há um custo único geral associado com nossa decisão, e nossa real tarefa é criar uma regra de decisão para minimizar tal custo. Esta é a tarefa central da teoria da decisão, da qual a classificação de padrões é talvez a sub-área mais importante.

Mesmo que saibamos os custos reais associados a nossas decisões e escolhamos o limite de decisão [; x^* ;] ótimo, ainda ficaremos insatisfeitos como a performance resultante. Nossa primeiro impulso deve ser ainda encontrar uma característica diferente pela qual separar os peixes. Vamos assumir, entretanto, que nenhuma outra característica tomada sozinha tenha melhor desempenho que a separação baseada na luminosidade. Para melhorar esse reconhecimento, então, devemos tentar usar mais de uma característica.

Em nossa busca por outras características, devemos tentar tirar proveito do fato de que o robalo é em geral mais largo que o salmão. Agora temos duas características para classificar os peixes -- a claridade/luminosidade [; x_1 ;] e a largura [; x_2 ;]. Se ignorarmos como essas características são medidas na prática, nós percebemos que o extrator de características reduziu a imagem de cada peixe a um ponto ou um vetor de características [; $\mathbf{x}$ ;] em um espaço de características de duas dimensões, onde

[; $$ \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix}. $$ ;] 

Nosso problema agora é particionar o espaço de características em duas regiões, em que para todos os padrões em uma região possamos dizer que é robalo e todos os padrões na outra região podemos dizer que é salmão.


(continua...)