10.14 Redes Neurais Artificiais

There is nothing particularly magical about multilayer neural networks; they implement linear discriminants, but in a space where the inputs have been mapped nonlinearly. (Duda, Hart, and Stork 2001, 283)

(McCulloch and Pitts 1943) admitem o tratamento da atividade do sistema neurofisiológico através da lógica proposicional. (Rosenblatt 1958) desenvolve uma teoria para um sistema nervoso hipotético, ou modelo cerebral (brain model), chamado de perceptron. O perceptron é projetado para ilustrar algumas das propriedades fundamentais dos sistemas inteligentes em geral, sem se tornar profundamente enredado nas condições especiais e frequentemente desconhecidas que são válidas para organismos biológicos específicos. (Rosenblatt 1962) indica que por ‘modelo cerebral’ entende-se qualquer sistema teórico que tenta explicar o funcionamento psicológico de um cérebro em termos de leis conhecidas da física e matemática, e fatos conhecidos da neuroanatomia e fisiologia.

(Rumelhart, Hinton, and Williams 1985) apresentam uma generalização do perceptron para estimar os coeficientes para redes arbitrárias. A regra, chamada regra delta generalizada (generalized delta rule), implementa um método de gradiente descendente para encontrar pesos que minimizam a soma do erro ao quadrado. Note que neste artigo a representação das redes é feita de baixo para cima. Esta representação se expande à medida que aumenta o número de camadas, dando a caracerística do aprendizado conhecido como profundo (deep). Redes com muitos neurônios por sua vez deixam a representação larga (wide), em uma terminologia pouco difundida.

(Cybenko 1989) e (Hornik, Stinchcombe, and White 1989) discutem diferentes abordagens para o Teorema da Aproximação Universal. Este teorema e seus corolários apontam que combinações lineares finitas de composições de funções fixas e univariadas e conjuntos de funções afins podem se aproximar uniformemente de qualquer função contínua de \(n\) variáveis reais, utilizando condições moderadas impostas à função univariada. Em particular, mostra-se que regiões de decisão arbitrárias podem ser aproximadas por redes neurais contínuas feedforward com apenas uma única camada interna oculta e qualquer não linearidade sigmoidal contínua.

Enquanto as Florestas Aleatórias e Boosting tem bom desempenho em reconhecimento de imagens, as redes neurais apresentam boa acurácia para reconhecimento em áudio vídeo. É importante lembrar que existem alguns pontos em aberto na metodologia de redes neurais, tal como a questão de identificabiidade discutida por (Goodfellow, Bengio, and Courville 2016) (8.2.2 Local Minima pp. 283-285) e (Pourzanjani, Jiang, and Petzold 2017)

10.14.1 Funções de ativação

https://en.wikipedia.org/wiki/Activation_function

10.14.2 Backpropagation

The back-propagation method was actually found in 1963 for solving some control problems (Bryson Jr, Denham, and Dreyfus 1963) and was rediscovered for perceptrons. (Vapnik 1995, 11)

O método de backpropagation (retropropagação) é, em suma, a regra da cadeia utilizado para estimar os pesos e vieses da rede. Para tal considera-se a linearidade do gradiente, i.e., \[\nabla/(f+g) = \nabla/(f)+\nabla/(g)\] Seja \(\theta\) o conjunto de todos os pesos e vieses da rede neural, tal que \(i=1,\ldots,n\), \(L_i(\theta)=(y_i - \Psi_{\theta}(x_i))^2 \Rightarrow L(\theta)=\sum_{i=1}^n L_i(\theta)\). O método online learning estima \(\theta\) iterativamente tal que \[\theta^{(t+1)}=\theta^{t}-\delta \nabla/L_i(\theta^{t}) \Rightarrow \nabla/L(\theta)=\sum_{i=1}^n \nabla/L_i(\theta)\]

(Hinton 2022) propõe o algoritmo Forward-Forward, um procedimento de aprendizado multicamada ganancioso inspirado nas máquinas de Boltzmann (Hinton and Sejnowski, 1986) e na Estimação Contrastante de Ruído (Gutmann and Hyvärinen, 2010). A ideia é substituir os passos para frente e para trás da retropropagação por dois passos para frente que operam exatamente da mesma maneira, mas em dados diferentes e com objetivos opostos.

10.14.3 neuralnet

Questões de conflito ou ausência de bibliotecas são frequentes.

# library(neuralnet)
# Error: .onLoad failed in loadNamespace() for 'tcltk', details:
#   call: fun(libname, pkgname)
#   error: Tcl/Tk libraries are missing: install the Tcl/Tk component from the R installer

10.14.4 Keras e TensorFlow

(Allaire and Chollet 2021) apresentam Keras, uma API de redes neurais. Tem os seguintes recursos principais:

  • Permite que o mesmo código seja executado na CPU ou GPU.
  • API que facilita a criação de protótipos de modelos de aprendizado profundo.
  • Suporte integrado para redes convolucionais (para visão computacional), redes recorrentes (para processamento de sequência) e qualquer combinação de ambas.
  • Suporta arquiteturas de rede arbitrárias: modelos de múltiplas entradas ou saídas, compartilhamento de camadas, compartilhamento de modelos, etc.

Backpropagation no TensorFlow/Keras - Gradiente estocástico

  1. Embaralhar os dados de treino.

  2. Pegar ‘mini lotes’ (mini batches), e.g. 32.

  3. Fazer backpropagation para cada lote \(l = 1,\ldots,L\), \(\theta^{t+1} = \theta^{t} - \delta \sum_{i \in \text{lote}} \nabla/L_i (\theta^{t})\).

  4. (1-2-3) formam uma época (epoch). Repetir, e.g., 10x.

Exercício 10.9 onsidere os links a seguir.
a. https://tensorflow.rstudio.com/reference/keras/install_keras/. b. https://software.intel.com/content/www/us/en/develop/articles/intel-optimization-for-tensorflow-installation-guide.html.
c. https://www.tensorflow.org/install/source#macos_1. d. https://github.com/bazelbuild/bazelisk. e.https://stackoverflow.com/questions/22424142/error-your-local-changes-to-the-following-files-would-be-overwritten-by-checkou. f. https://www.youtube.com/watch?v=CHJzoFArI8c.
g. http://playground.tensorflow.org.
h. ?generics::fit.
i. ?keras::fit.keras.engine.training.Model.
j. ?keras::compile.

# devtools::install_github('rstudio/keras')
# keras::install_keras()
# reticulate::py_config()
# reticulate::py_module_available('keras')
# devtools::install_github('rstudio/reticulate')
# install.packages('tensorflow')
# tensorflow::install_tensorflow(version = '2.6.0-cpu')

Exemplo 10.31 Classificando espécies de lírio via redes neurais. Lembre de sempre padronizar os dados! (?scale)

# amostra de treino: 60%
set.seed(1); itrain <- sort(sample(1:nrow(iris), floor(.6*nrow(iris))))
train <- iris[itrain,]
test <- iris[-itrain,]
# padronizando/normalizando
train[-5] <- scale(train[-5])
test[-5] <- scale(test[-5])
# modelo
# library(keras)
# fit.nn <- keras_model_sequential()
# fit.nn
# fit.nn <- layer_dense(fit.nn, units = 2^4, activation = 'relu', input_shape = 4)
# fit.nn
# fit.nn <- layer_dense(fit.nn, units = 2^3, activation = 'relu')
# fit.nn
# fit.nn <- layer_dense(fit.nn, units = 2^2, activation = 'relu')
# fit.nn <- layer_dense(fit.nn, units = 2^0, activation = 'relu')
# fit.nn
# compile(fit.nn, loss = 'mse', 
#         optimizer = 'adam', 
#         metrics = 'mse')
# ini <- Sys.time()
# history <- fit(fit.nn, train[-5], train$Species,
#                batch_size = 2^3, epochs = 10, 
#                validation_split = .2)
# Sys.time()-ini

Referências

Allaire, JJ, and François Chollet. 2021. Keras: R Interface to ’Keras’. https://keras.rstudio.com.
Bryson Jr, Arthur E, Walter F Denham, and Stewart E Dreyfus. 1963. “Optimal Programming Problems with Inequality Constraints I: Necessary Conditions for Extremal Solutions.” AIAA Journal 1 (11): 2544–50. https://doi.org/10.2514/3.2107.
Cybenko, George. 1989. “Approximation by Superpositions of a Sigmoidal Function.” Mathematics of Control, Signals and Systems 2 (4): 303–14. http://www.vision.jhu.edu/teaching/learning/deeplearning18/assets/Cybenko-89.pdf.
Duda, Richard O, Peter E Hart, and David G Stork. 2001. Pattern Classification. John Wiley & Sons, Inc.
Goodfellow, Ian, Yoshua Bengio, and Aaron Courville. 2016. Deep Learning. MIT Press. http://www.deeplearningbook.org.
Hinton, Geoffrey. 2022. “The Forward-Forward Algorithm: Some Preliminary Investigations.” arXiv Preprint arXiv:2212.13345. https://arxiv.org/pdf/2212.13345.
Hornik, Kurt, Maxwell Stinchcombe, and Halbert White. 1989. “Multilayer Feedforward Networks Are Universal Approximators.” Neural Networks 2 (5): 359–66. https://www.cs.cmu.edu/~bhiksha/courses/deeplearning/Fall.2016/notes/Sonia_Hornik.pdf.
McCulloch, Warren S., and Walter Pitts. 1943. “A Logical Calculus of the Ideas Immanent in Nervous Activity.” The Bulletin of Mathematical Biophysics 5 (4): 115–33. https://www.cs.cmu.edu/~./epxing/Class/10715/reading/McCulloch.and.Pitts.pdf.
Pourzanjani, Arya A, Richard M Jiang, and Linda R Petzold. 2017. “Improving the Identifiability of Neural Networks for Bayesian Inference.” In NIPS Workshop on Bayesian Deep Learning, 4:29. http://bayesiandeeplearning.org/2017/papers/15.pdf.
Rosenblatt, Frank. 1958. “The Perceptron: A Probabilistic Model for Information Storage and Organization in the Brain.” Psychological Review 65 (6): 386. https://psycnet.apa.org/fulltext/1959-09865-001.pdf.
———. 1962. “Principles of Neurodynamics: Perceptrons and the Theory Of.” Brain Mechanisms, 555–59. https://safari.ethz.ch/digitaltechnik/spring2019/lib/exe/fetch.php?media=neurodynamics1962rosenblatt.pdf.
Rumelhart, David E, Geoffrey E Hinton, and Ronald J Williams. 1985. “Learning Internal Representations by Error Propagation.” California Univ San Diego La Jolla Inst for Cognitive Science.
Vapnik, Vladimir. 1995. The Nature of Statistical Learning Theory. 1st ed. Springer Science & Business Media.