Vídeo->https://youtu.be/KXg-81FhYVc
Redes Neurais: em teoria tem forma de grafo k-partido, multi layer percepton (MLP) só tem ligações com outras camadas (não tem ligações com neurônios da mesma camada)
No exemplo tem uma camada de entrada, uma e saída e uma camada oculta (hidden). Entrada com cinco neurônios (cada neurônio recebe um número real de entrada), dois neurônios de saída (um para cada classe, classificação binária) e 8 na camada intermediária.
Na prática, é Algebra Linear. Cada neurônio da camada k é o somatório dos pesos x entrada de cada neurônio da camada k-1 adicionado ao bias. É uma combinação linear Ni(k) = soma (Nj(k-1) x Wj(k-1)) + Bi(k)
Funções não lineares (ativação): Sigmoid; Tangente hiperbólica (tanh) e ReLU (retificação)
Tensor Flow / Keras
Programação em GPU é excelente quando se trata de uma única operação pq tem vários "operários" mas é complexo (linguagem CUDA)
Mas o colab da Google só tem GPU nas assinaturas pagas.
Na classificação binária deve ser usada softmax ... função
No exemplo são 3 camadas ocultas. Modelo do tipo Sequential. A quantidade de registros é indiferente e pode ser qq valor para o modelo, o que importa é a quantidade de atributos de cada entrada que define o número de neurônios.
Em redes neurais aprender significa encontrar os melhores pesos para minimizar a função de custo. Precisa de um gabarito para o treinamento.
Metodologia experimental para avaliar se o modelo está correto ainda é o mais complexo em ML.
A função de custo: dada uma previsão e um valor real calcular o erro ... exemplo entropia cruzada (para problemas de classificação binária)
Python: numpy, scikitlearn, pytorch ... Tensor Flow é o padrão DL para a indústria (investimento da Google)
Gradiente indica a direção de subida e descida da curva, o vetor gradiente negativo da função de custo é a direção de decréscimo. Cada batch tem uma atualização dos pesos que é chamada de aprendizado. O tamanho do batch é a quantidade de dados usados para "caminhar" no gradiente. A época é uma passada em todo o conjunto de dados para a fase de treinamento, quando menor o batch mais passos são dados para completar uma época. Quanto maior o batch mais memória é usada na GPU.
Aumentar a quantidade de camadas pode dar problema na aplicação do gradiente via backpropagation, pode não encontrar o mínimo.
Acurácia é para monitorar o desempenho do modelo e não para atualizar os pesos.
Overfitting: muitas épocas ou tamanho muito pequenos para os batches podem super ajustar o modelo aos dados de treinamento e não generaliza. Usar um conjunto de validação para ajudara identificar o ponto de early stop. Ou aplicar drop-out, ou seja, descartar parte da informação de entrada para tornar o modelo mais robusto.
Separou 80% para treino e 20% para teste. O teste fornece uma estimativa do desempenho do modelo no mundo real.
sgd performou mal por volta de 61% de acurácia no treino, com adam chegou a 93%.
Redes Neurais Profundas
tensor: n-dimensões de entrada, volume
convolução: aplicar um filtro em uma matriz de pixels, esse filtro é aprendido através do treinamento, a profundidade é a quantidade de filtros.
o tamanho do filtro é o tamanho da área onde o mesmo é aplicado.
cada classe é transformada em um vetor one-hot
flatten: planificar, tornar o volume um vetor, uma dimensão
aumentar muito a dimensionalidade e depois descartar uma parte grande dos dados (drop out)
o tempo de treinamento é bem maior, no exemplo foi quase 1 minuto em cada época em CPU, para GPU seria bem mais rápido
Comentários
Postar um comentário
Sinta-se a vontade para comentar. Críticas construtivas são sempre bem vindas.