Machine Learning
UFPE
Um algoritmo é uma sequência de instruções que informa ao computador o que ele deve fazer.
Os computadores são compostos por bilhões de minúsculas chaves chamadas transistores, e os algoritmos ligam e desligam essas chaves bilhões de vezes por segundo.
Claude Shannon, conhecido como o pai da teoria da informação, foi a primeira pessoa a entender que o que os transistores fazem, quando ligam ou desligam em resposta a outros transistores, chama-se raciocínio.
Acredite ou não, todos os algoritmos, não importando sua complexidade, podem ser reduzidos a apenas três operações: E, OU e NÃO. Algoritmos simples podem ser representados por diagramas, com o uso de diferentes símbolos para as operações E, OU e NÃO.
Por exemplo, se influenza ou malária causam febre, e Tylenol cura febre ou dor de cabeça, ou seja, desejamos representar as seguintes relações:
Influenza e Malária são conectadas a Febre, representando que elas podem causar febre. Tylenol Cura, representado por um losango, é conectado a Febre e Dor de Cabeça, indicando que Tylenol pode curar ambos.
library(DiagrammeR)
# Criando os nós
ndf <- create_node_df(
n = 5,
label = c("Influenza", "Malária", "Febre", "Dor de Cabeça", "Tylenol Cura"),
type = c("condition", "condition", "condition", "condition", "action"),
shape = c("rectangle", "rectangle", "rectangle", "rectangle", "diamond")
)
# Criando as arestas
edf <- create_edge_df(
from = c(1, 2, 5, 5),
to = c(3, 3, 3, 4)
)
# Criando e renderizando o gráfico
graph <- create_graph(
nodes_df = ndf,
edges_df = edf
)
render_graph(graph)
A figura anterior é denominada de Diagrama de bloco, e é uma representação gráfica de um algoritmo ou de um processo, e em geral:
Retângulos representam operações ou instruções;
Losangos representam decisões, como E, OU e NÃO;
Setas representam a sequência de execução.
O diagrama de blocos é uma ferramenta de modelagem de processos que permite representar graficamente a sequência de passos de um algoritmo, facilitando a compreensão do processo e a identificação de possíveis falhas.
Todo algoritmo tem uma entrada e uma saída: os dados entram no computador, o algoritmo faz o que precisa com eles, e um resultado é produzido.
O machine learning faz o contrário: entram os dados e o resultado desejado, e é produzido o algoritmo que transforma um no outro.
Os algoritmos de aprendizado – também conhecidos como aprendizes – são aqueles que criam outros algoritmos. Com o machine learning, os computadores escrevem seus próprios programas, logo não precisamos mais fazê-lo.
Os computadores escrevem seus próprios programas.
Quando consideramos o machine learning, duas coisas se destacam imediatamente:
Se fosse algo que pudesse ser comprado em um supermercado, sua embalagem diria: “Basta adicionar dados”.
A redução da complexidade para o programador é assombrosa. É claro que, como a Hidra, o monstro da complexidade gerará novas cabeças assim que cortarmos as anteriores, mas inicialmente elas serão menores e demorarão um pouco para crescer, logo ainda teremos uma grande vantagem.
Figure 1: Hidra de Lerna, a criatura mitológica.(fonte:Wikipedia)
Alguns aprendizes obtêm conhecimento e outros adquirem aptidões.
No machine learning, com frequência o conhecimento assume a forma de modelos estatísticos, porque em grande parte ele é estatístico:
As aptidões costumam assumir a forma de procedimentos:
Em geral, os procedimentos são bem simples e o conhecimento é que é complexo.
O machine learning assume muitas formas e é conhecido por muitos nomes:
Alguns terão vida longa, outros durarão menos.
O machine learning às vezes é confundido com IA, mas como já sabem, ele é um subcampo da IA, entretanto, cresceu tanto e foi tão bem-sucedido que ofusca sua orgulhosa mãe.
O machine learning às vezes é confundido com IA, mas como já sabem, ele é um subcampo da IA, entretanto, cresceu tanto e foi tão bem-sucedido que ofusca sua orgulhosa mãe.
A função \(f\) é desconhecida. Representa a solução IDEAL.
Os algoritmos de ML buscan uma função \(g \approx f\).
Conceitos importantes incluem:
Aprendizado supervisionado - algoritmos treinados com dados rotulados, mapeando entradas para saídas desejadas.
Aprendizado não supervisionado - algoritmos que clusterizam e fazem inferências sobre conjuntos de dados não rotulados.
Aprendizado por reforço - algoritmos que aprendem com tentativa e erro interagindo com um ambiente dinâmico.
Conceitos importantes incluem:
Aprendizado supervisionado - algoritmos treinados com dados rotulados, mapeando entradas para saídas desejadas.
Aprendizado não supervisionado - algoritmos que clusterizam e fazem inferências sobre conjuntos de dados não rotulados.
O aprendizado supervisionado é o tipo mais comum de aprendizado de máquina. Ele é usado para prever um resultado com base em um conjunto de variáveis de entrada.
O aprendizado supervisionado é chamado assim porque o algoritmo aprende a partir de um conjunto de dados rotulados, ou seja, um conjunto de dados que contém entradas e saídas desejadas.
O aprendizado supervisionado é usado em uma ampla variedade de aplicações, incluindo classificação, regressão.
Quando a saída desejada é uma variável qualitativa \((y \in \mathbb{R})\), o problema é chamado de CLASSIFICAÇÃO.
Obtém um modelo otimizado por meio de treinamento e aprendizado baseado em observações \(x_i\), com \(i = 1, 2, \ldots, N\), para as quais se tem a respectiva resposta \(y_i\) desejada.
Cada observação \(x_i\) pode ser formada por \(n\) variáveis (features) independentes \(x_{i1}, x_{i2}, \ldots, x_{in}\), com \(n \geq 1\).
Por exemplo:
\[x_{novo} = [\text{Weather = 'Rainy', Temperature = 'Warm', Wind Speed = 'Weak'}] \rightarrow y_{new}= ?\]
Quando a saída desejada é referentes a uma variável quantintativa seja essa, pertencente aos números inteiros \((y \in \mathbb{Z})\) ou aos números reais \((y \in \mathbb{R})\), o problema é chamado de REGRESSÃO.
Por exemplo:
O aprendizado não supervisionado é o tipo de aprendizado de máquina que é usado para fazer inferências a partir de conjuntos de dados não rotulados.
O aprendizado não supervisionado é chamado assim porque o algoritmo não é treinado com dados rotulados. Em vez disso, o algoritmo aprende com os dados de treinamento e é capaz de fazer inferências sobre novos dados.
O aprendizado não supervisionado é usado em uma ampla variedade de aplicações, incluindo clusterização, redução de dimensionalidade.
Clusterização é a técnica de aprendizado não supervisionado mais comum. Ela é usada para agrupar dados em grupos com base em suas características (variáveis, features)
Novas observações podem ser agrupadas calculando sua semelhança em relação aos demais grupos formados.
Dentre os três tipos apresentados, é a área mais “próxima” da IA em termos de “borda de conhecimento.
Representa uma quebra de paradigma, pois não depende de receber a resposta certa, nem de buscar semelhanças entre amostras. Buscar “recompensas” que são obtidas quando “bons” resultados são obtidos.
Intuitivamente, o diferencial é claro:
No lugar da amostra, temos uma sequência de ações que são tomadas em um ambiente, e o algoritmo aprende a melhor sequência de ações para maximizar uma recompensa.
Para cada ação, há um feedback que indica se a ação foi boa ou ruim.
Por exemplo: Após várias jogadas, ganhou o jogo de damas.
Imagens retiradas de um Curso de ML da Huawei.
The Elements of Statistical Learning: Data Mining, Inference and Prediction, Hastie, T., Tibshirani, R. and Friedman, J., 2nd ed., Springer-Verlag, 2009.
An Introduction to Statistical Learning: With Applications in R, James, G., Witten, D., Hastie, T. and Tibshirani, R., Springer-Verlag, 2013.
Aprendizado de máquina: uma abordagem estatística, Izbicki, R. and Santos, T. M., 2020.
Extras:
Morris, Meredith Ringel, et al. “Levels of AGI: Operationalizing Progress on the Path to AGI.” arXiv preprint arXiv:2311.02462 (2023).
Weijermars, Ruud, Umair bin Waheed, and Kanan Suleymanli. “Will ChatGPT and Related AI-tools Alter the Future of the Geosciences and Petroleum Engineering?.” First Break 41.6 (2023): 53-61.
OBRIGADO!
Slide produzido com quarto
Redes Neurais - Prof. Jodavid Ferreira