Os estudos iniciais sobre IA (Inteligência Artificial), que apresento nos tópicos anteriores se dedicam a estudar os algorítmos estatísticos (KNN,SVM e Naive Bayes) para os dados numéricos e análises estatísticas para os dados textuais. Para este tópico, redes neurais, o estudo se baseia nas redes neurais artificiais que, no meu entender, estão mais próximas do que vem se chamando, não corretamente, de inteligência artificial. A simulação dessas redes às redes biológicas torna o estudo bastante interessante, daí eu achar que vale uma introdução mais detalhada do assunto, principalmente para quem não o conhece bem, antes de executar os algorítmos que resolvi estudar. Sendo assim, vamos ver alguns conceitos e uma noção mais detalhada do que é processado pelos algorítmos, antes de executá-los.
Comecemos conceituando como rede neural biológica uma série de neurônios interconectados,
ligando seus terminais axônicos, via sinapse, à dendritos de outros neurônios. Por
analogia, vamos conceituar uma rede neural artificial similar a rede neural biológica,
composta por camada de nós (neurônios artificiais), com a seguinte estrutura:
a) camada de entrada
Os nós são conectados, possuindo peso (valor de importância da variável) e valor limite
a cada um. O dado de cada nó só é passado para a camada seguinte se o valor de saída
superar o limite estipulado. Os pesos são atribuídos à camada de entrada, valorizando
adequadamente os seus nós. A camada de saída é gerada por uma função apropriada. A saída de cada nó,
se exceder o valor estipulado, se torna a entrada do próximo nó. Essa saída é definida
pela aplicação de uma função de ativação. As funções mais usuais são: linear, limiar,
sigmoidal, tangente hiperbólica, gaussiana e linear retificada(ReLU), conforme mostradas
abaixo: A figura abaixo mostra a forma de uma rede neural artificial.
O processo de passagem dos dados de uma camada para a próxima é conhecido como
'feedforward', ou seja, alimentação para a frente. Uma vez construído o modelo de rede neural artificial é necessário treinar o modelo para avaliar a sua precisão. Para isso, é comum usarmos uma função de perda (erro). Ao minimizarmos a perda, aumentamos a precisão do modelo. Normalmente, as redes neurais são 'feedforward' (entrada-> saída), mas o modelo pode ser treinado com retropropagação (saída-> entrada).
Os tipos mais comuns de redes neurais artificiais são:
Perception As redes neurais aprendem e se adaptam aos padrões das variáveis de entrada, o que difere do processamento convencional que gera resultados sem fazer adaptações, resultantes do treinamento. Quanto maior for a qualidade dos dados e sua quantidade, menor é o erro de aplicação das redes neurais na geração dos resultados. Pode-se resumir os os passos de processamento da rede neural artificial como:
Treinamento À medida que a rede neural aprende, seus pesos e vieses são ajustados. Pode-se controlar a velocidade de aprendizado e a duração do treinamento. As redes neurais que usam retropropagação são importantes no aprendizado, pois isto ajuda a ajustar os pesos e os vieses para reduzir o erro. A função de ativação de um rede neural decide se um nó(neurônio) deve ser ativado, baseado na soma ponderada de suas entradas e o valor limite(viéis).
O aprendizado de uma rede neural pode se realizar como:
Supervisionado
No treinamento supervisionado, que é bastante usado, o esquema de treinamento é :
iniciar com pesos aleatórios e fazer processamentos repetidos até que o erro
seja menor que o proposto. Enquanto não for, ir atualizando o pesos e verificando
os limites.
Agora, com esses conceitos em mente, vamos entender o que faz cada algorítmo apresentado,
programados na linguagem PHP: ALGORÍTMO 1 São lidas as quatro notas e calculada a sua média aritmética. Esses dados são normalizados entre 0 e 1, dividindo-se todos esses valores por 900, que foi considerada a nota máxima.
Criam-se duas camadas ocultas na rede neural artificial, com taxa de aprendizado e
de duração de 10000 ciclos. Foram criados pesos aleatórios, que serão utilizados nos
cálculos entre as camadas de
entrada e as ocultas, assim como das camadas ocultas para a de saída. (dados categóricos)
O processamento é o mesmo dos dados numéricos, diferindo apenas nos dados
da camada de entrada, que são as categorias: idade, sexo, estado civil,
cor/raça, nacionalidade e escola-origem. ALGORÍTMO 2
São lidas as notas (CN,CH,LC,MT) e calculada a média aritmética (dados categóricos)
São lidas as categorias de entrada: idade, sexo, estado civil, cor/raça, nacionalidade,
e escola-origem, sendo geradas as médias aritméticas das notas CN,CH,LC e MT. ALGORÍTMO 3
São lidas as notas das provas CN,CH,LC e MT e média aritmética é categorizada em
quatro tipos: (dados categóricos)
É o mesmo procedimento dos dados numéricos só que, neste caso, são usados os
valores das categorias: idade, sexo, estado civil, cor/raça, nacionalidade e
escolaorigem, ao invés de se usar as notas das provas.
ALGORÍTMO 4
São lidas as notas das provas e calculada as médias aritméticas. Se a média
calculada superar a média informada é dado ao valor 1, caso contrário é dado um
valor zero. Para o treinamento, ficam estabelecidos os valores: 4 nós na camada de entrada,
5 nas camadas ocultas, taxa de aprendizagem 0,1 e uma duração de 10000 ciclos. (dados categóricos)
É o mesmo procedimento só que foram usados os valores das categorias: idade, sexo,
estado civil, cor/raça, nacionalidade e escola-origem. ALGORÍTMO 5
Neste caso, as notas das provas são categorizadas como: |