Estou tentando aprender como a Rede Neural funciona no reconhecimento de imagens. Eu já vi alguns exemplos e fiquei ainda mais confuso. No exemplo do reconhecimento de letras de uma imagem de 20x20, os valores de cada pixel se tornam a camada de entrada. Então 400 neurônios. Em seguida, uma camada oculta de neurônios e 26 neurônios de saída. Em seguida, treine a rede e funcionará, não perfeita.
O que me confundiu sobre a Rede Neural é como ela aprende sobre o que está em uma imagem. Você não precisa fazer limiar, segmentação ou medição, de alguma forma a rede aprende a comparar imagens e reconhecer. É como mágica para mim agora. Por onde começar a aprender rede neural?
machine-learning
neural-networks
image-processing
user1731927
fonte
fonte
Respostas:
Uma grande compreensão de como uma rede neural pode aprender a classificar algo tão complexo quanto os dados de imagem, dados apenas exemplos e respostas corretas, veio a mim enquanto estudava o trabalho do professor Kunihiko Fukushima sobre o neocognition nos anos 80. Em vez de apenas mostrar à sua rede várias imagens e usar a propagação traseira para permitir que ela decida por si própria, ele adotou uma abordagem diferente e treinou sua rede camada por camada e até nó por nó. Ele analisou o desempenho e a operação de cada nó individual da rede e intencionalmente modificou essas partes para fazê-las responder da maneira pretendida.
Por exemplo, ele sabia que queria que a rede fosse capaz de reconhecer linhas, e treinou camadas e nós específicos para reconhecer três linhas horizontais de pixel, três linhas verticais de pixel e variações específicas de linhas diagonais em todos os ângulos. Ao fazer isso, ele sabia exatamente quais partes da rede poderiam ser acionadas quando os padrões desejados existissem. Então, como cada camada está altamente conectada, todo o neocognitron como um todo poderia identificar cada uma das partes compostas presentes na imagem, independentemente de onde elas existissem fisicamente. Portanto, quando um segmento de linha específico existisse em algum lugar da imagem, sempre haveria um nó específico que seria acionado.
Mantendo essa imagem sempre presente, considere a regressão linear que é simplesmente encontrar uma fórmula (ou uma linha) via soma do erro ao quadrado, que passa mais de perto pelos seus dados, que é fácil de entender. Para encontrar "linhas" curvas, podemos fazer o mesmo cálculo da soma dos produtos, mas agora adicionamos alguns parâmetros de x ^ 2 ou x ^ 3 ou polinômios de ordem ainda mais alta. Agora você tem um classificador de regressão logística. Este classificador pode encontrar relacionamentos que não são lineares por natureza. De fato, a regressão logística pode expressar relacionamentos arbitrariamente complexos, mas você ainda precisa escolher manualmente o número correto de recursos de energia para realizar um bom trabalho na previsão dos dados.
Uma maneira de pensar na rede neural é considerar a última camada como um classificador de regressão logística , e então as camadas ocultas podem ser pensadas como "seletores de recursos" automáticos . Isso elimina o trabalho de escolher manualmente o número correto e a potência dos recursos de entrada. Assim, o NN se torna um seletor automático de recursos de energia e pode encontrar qualquer relação linear ou não linear ou servir como um classificador de conjuntos arbitrariamente complexos ** (isso pressupõe apenas que existem camadas e conexões ocultas suficientes para representar a complexidade de o modelo que ele precisa aprender). No final, espera-se que um NN que funcione bem aprenda não apenas "o relacionamento" entre as entradas e as saídas, mas, em vez disso, buscamos uma abstração ou um modelo quegeneraliza bem.
Como regra geral, a rede neural não pode aprender nada que um ser humano razoavelmente inteligente não possa, teoricamente, aprender com tempo suficiente com os mesmos dados, no entanto,
fonte
Você pode ter ouvido dizer que as redes neurais são " aproximadores de funções universais ". Em essência, o teorema de Cybenko diz que, para qualquer mapeamento de funções de reais para reais, você pode aproximar-se com uma rede neural com funções de ativação sigmóide. De fato, as redes neurais permitem calcular qualquer função computável por uma máquina de Turing (ou seja, qualquer coisa que você possa escrever um algoritmo para calcular). Infelizmente, essas provas dizem apenas que, para algumas configurações finitas de neurônios e pesos, você pode aproximar qualquer função.
A teoria é boa e elegante, mas sua pergunta parece ser mais parecida com a de como realmente codificar a computação de alguma função em um conjunto de neurônios e pesos. Para ilustrar, considere um exemplo simples - o exclusivo-ou. O XOR aceita duas entradas, passa essas entradas. Quando uma e apenas uma das entradas são ativadas, o nó de saída é ativado. Com as duas ou nenhuma das entradas ativadas, o nó de saída não é ativado.
Observe que os três nós ocultos fazem coisas diferentes. Os nós mais à esquerda e mais à direita simplesmente passam pelas ativações dos nós de entrada de respeito. O neurônio do meio recebe as duas entradas e, de alguma forma, as nega se ambas estiverem ativadas. Essa inteligente combinação e recombinação de insumos é essencialmente como o trabalho em uma rede neural é feito.
Obviamente, para funções mais complexas, a combinação e recombinação devem ser feitas de maneiras mais inteligentes e complicadas, mas é essencialmente isso que acontece em um nível baixo. O louco é que isso é realmente tudo o que você precisa para calcular qualquer função computável! Por outro lado, as máquinas de turing também se tornam enganosamente simples ...
O problema é que não temos realmente uma maneira de gerar magicamente a rede neural que calcula alguma função arbitrária. As provas apenas nos dizem que existe alguma rede por aí que poderia fazê-lo. Quando treinamos nossas redes neurais, estamos simplesmente tentando encontrar uma rede bem próxima.
No contexto do reconhecimento de imagem, você pode imaginar padrões de codificação na rede. Por exemplo, para reconhecer o número '1', você pode imaginar nós ocultos que esperam que uma coluna de pixels seja quase total ou totalmente ativada, com os pixels vizinhos desativados. Esse nó oculto pode ser bastante bom em reconhecer uma linha reta nessa coluna específica. Coloque o suficiente disso em breve e, em breve, você terá vários nós em locais suficientes da sua imagem; se eu mostrar à rede um, nós ocultos em linha reta suficientes serão ativados, indicando um '1'. É claro que o problema se generaliza na rede para que ela possa reconhecer um conjunto variado de entradas.
Espero que isso ajude você a entender mais ou menos os conceitos de como uma rede neural pode executar cálculos. No entanto, você chegou a um ponto bastante importante sobre as redes neurais: em geral, é difícil, na melhor das hipóteses, entender por que a rede gera uma saída específica, especialmente quando você considera que, para algo como reconhecimento de imagem, as redes geralmente são grande o suficiente para que os humanos tenham dificuldade em compreender cada uma das partes móveis da máquina. O que complica ainda mais o fato é que, em geral, a maioria das redes neurais na verdade não possui um único nó oculto para cada pequeno recurso que a rede possa aprender sobre os dados. Em vez disso, detectar algo como uma linha reta para classificar o número '1' ocorreria de maneira não centralizada em muitos nós ocultos. Outros algoritmos,
Se você está procurando mais leitura, eu recomendo a leitura deste tutorial no ai junkie. Ele mostra os conceitos básicos de como uma rede neural funciona e até fornece um exemplo de código simples para que as redes neurais conduzam um tanque em direção a uma meta. No entanto, o tutorial não abrange a retropropagação, que é de longe a maneira mais comum de treinar redes neurais, e usa um algoritmo genético simples. Quando ele começa a falar sobre genética, acho que você pode parar de ler ...
fonte
Que o que você está confuso
O que está em uma imagem é representado digitalmente pelos valores nos pixels da imagem. Se você der um exemplo de cor na imagem. O pixel pode ter três valores, cada um para as três cores principais - vermelho, verde e azul (
RGB
). Um pixel com (10,50,100
) significa que possui 'menos' elementos de cor azul do que um pixel com (40,50,100
). Assim, na imagem, o primeiro pixel representa uma região com menos cor azul. Essas são as informações que a rede neural aprende, de um local / região da imagem para a outra e acaba 'sabendo' o que está na imagem. O mesmo princípio é aplicado a outros recursos de imagem (além da cor) que podem ser usados como entrada na rede neural. Veja isto e isto para obter conceitos básicos de imagem e depois vá para este para aprender como a rede neural funciona.fonte
Todos os problemas de aprendizado de máquina são iguais. Você tem alguns dados de treinamento, aprende um modelo que representa esses dados e tem capacidade de generalizar esse conhecimento da maneira que agrupa, classifica e aprende com algoritmos diferentes.
No reconhecimento de imagem, você tem novamente um conjunto de imagens sobre as quais deseja aprender.
Se você deseja reconhecer mais de uma coisa, use vários classificadores para cada uma.
fonte
Também gostaria de mencionar muito popular para redes neurais convolucionais de reconhecimento de imagem. Aqui está um link para uma explicação simplificada de uma CNN .
Resumidamente, na CNN, a imagem é primeiro dividida em recursos, como bordas, formas, coleções de formas. Em seguida, esses recursos são 'alimentados' em uma rede neural multicamada 'regular' totalmente conectada (perceptron multicamada).
Em mais detalhes, um conjunto de filtros é aplicado para extrair recursos na forma de um mapa de recursos. Um filtro é apenas uma matriz (aleatória no início) aplicada à imagem original, para que o produto escalar da matriz da imagem original e da matriz do filtro seja calculado e o resultado seja resumido. O filtro se move ao longo da imagem original, um pixel (a etapa) de cada vez, e a matriz do mapa de recursos está sendo preenchida. Um mapa de recursos é criado para cada filtro. Em seguida, a não linearidade é introduzida com RELU (Rectified Linear Unit) para cada pixel em cada mapa de recursos. O pool, através da aplicação de max (), sum () ou average (), é feito após a convolução. Por fim, os recursos extraídos dessa maneira parecem peças 'ampliadas' da imagem original. Esses recursos são inseridos em uma rede neural totalmente conectada (todas as unidades estão conectadas) e as probabilidades de cada imagem (digamos que treinamos nossa rede em imagens de carros, árvores e barcos) são calculadas após cada avanço na rede. A rede é treinada, o que significa que os parâmetros (pesos) e as matrizes de filtro são otimizados por meio de retropropagação (minimização de erro de classificação incorreta). Quando uma nova imagem é inserida na rede treinada, apenas o feedforward é necessário para identificar a imagem (desde que a rede seja precisa o suficiente, ou seja, nós a treinamos com exemplos suficientes etc.) o que significa que os parâmetros (pesos) e as matrizes de filtro são otimizados por meio de retropropagação (minimização de erro de classificação incorreta). Quando uma nova imagem é inserida na rede treinada, apenas o feedforward é necessário para identificar a imagem (desde que a rede seja precisa o suficiente, ou seja, nós a treinamos com exemplos suficientes etc.) o que significa que os parâmetros (pesos) e as matrizes de filtro são otimizados por meio de retropropagação (minimização de erro de classificação incorreta). Quando uma nova imagem é inserida na rede treinada, apenas o feedforward é necessário para identificar a imagem (desde que a rede seja precisa o suficiente, ou seja, nós a treinamos com exemplos suficientes etc.)
fonte
É bom saber que a ANN pode criar qualquer função f (x) ou f (x, y, z, ..) ou qualquer multifuncional para esse assunto. Mas também é importante saber que as funções têm limites para classificar os dados ... existem subconjuntos de relações mais complexas de conjuntos de potências de objetos, que são importantes na classificação e que não são descritos por essas funções de maneira elegante ou natural, mas são importantes na linguagem e na classificação de objetos. A RNA também pode fazer isso.
fonte