A intelixencia artificial (IA) gañou unha importante popularidade nos últimos anos.
Se es un enxeñeiro de software, un informático ou un entusiasta da ciencia de datos en xeral, probablemente estea intrigado polas sorprendentes aplicacións de procesamento de imaxes, recoñecemento de patróns e detección de obxectos que ofrece este campo.
O subcampo máis importante da IA do que probablemente escoitaches falar é o Deep Learning. Este campo céntrase en potentes algoritmos (instrucións de programas informáticos) modelados a partir da funcionalidade do cerebro humano coñecida como Redes Neurais.
Neste artigo, repasaremos o concepto de redes neuronais e como construír, compilar, encaixar e avaliar estes modelos usando Pitão.
Redes Neurais
As redes neuronais, ou NN, son unha serie de algoritmos modelados a partir da actividade biolóxica do cerebro humano. As redes neuronais constan de nodos, tamén chamados neuronas.
Unha colección de nodos verticais coñécese como capas. O modelo consta dunha entrada, unha saída e unha serie de capas ocultas. Cada capa está formada por nós, tamén chamados neuronas, onde se realizan os cálculos.
No seguinte diagrama, os círculos representan os nós e a colección vertical de nós representan as capas. Neste modelo hai tres capas.
Os nodos dunha capa están conectados coa seguinte capa a través de liñas de transmisión como se ve a continuación.
O noso conxunto de datos está formado por datos etiquetados. Isto significa que cada entidade de datos ten asignado un determinado valor de nome.
Polo tanto, para un conxunto de datos de clasificación de animais teremos imaxes de gatos e cans como os nosos datos, con "gato" e "can" como as nosas etiquetas.
É importante ter en conta que as etiquetas deben converterse en valores numéricos para que o noso modelo teña sentido, polo que as etiquetas dos nosos animais pasan a ser "0" para gatos e "1" para cans. Tanto os datos como as etiquetas pasan polo modelo.
Aprendizaxe
Os datos entréganse ao modelo unha entidade á vez. Estes datos divídense en anacos e pásanse por cada nodo do modelo. Os nodos realizan operacións matemáticas sobre estes anacos.
Non necesitas coñecer as funcións matemáticas nin os cálculos deste titorial, pero é importante ter unha idea xeral de como funcionan estes modelos. Despois dunha serie de cálculos nunha capa, os datos pásanse á seguinte capa e así por diante.
Unha vez completado, o noso modelo predice a etiqueta de datos na capa de saída (por exemplo, nun problema de clasificación de animais obtemos unha predición "0" para un gato).
O modelo procede entón a comparar este valor previsto co valor real da etiqueta.
Se os valores coinciden, o noso modelo tomará a seguinte entrada, pero se os valores son diferentes, o modelo calculará a diferenza entre ambos os valores, chamada perda, e axustará os cálculos dos nodos para producir etiquetas coincidentes a próxima vez.
Marcos de aprendizaxe profunda
Para construír redes neuronais en código, necesitamos importar Marcos de aprendizaxe profunda coñecidas como bibliotecas que utilizan o noso entorno de desenvolvemento integrado (IDE).
Estes marcos son unha colección de funcións preescritas que nos axudarán neste tutorial. Usaremos o framework Keras para construír o noso modelo.
Keras é unha biblioteca de Python que usa un backend de aprendizaxe profunda e intelixencia artificial chamado Fluxo tensor para crear NN en forma de modelos secuenciais sinxelos con facilidade.
Keras tamén vén cos seus propios modelos preexistentes que tamén se poden usar. Para este tutorial, imos crear o noso propio modelo usando Keras.
Podes obter máis información sobre este marco de aprendizaxe profunda a partir de Sitio web de Keras.
Construír unha rede neuronal (titorial)
Pasemos a construír unha rede neuronal usando Python.
Declaración do problema
As redes neuronais son un tipo de solución a problemas baseados na IA. Para este tutorial repasaremos os datos de diabetes de Pima Indians, que están dispoñibles aquí.
UCI Machine Learning compilou este conxunto de datos e contén un rexistro médico de pacientes indios. O noso modelo ten que predecir se o paciente ten un inicio de diabetes dentro de 5 anos ou non.
Cargando conxunto de datos
O noso conxunto de datos é un único ficheiro CSV chamado "diabetes.csv" que se pode manipular facilmente mediante Microsoft Excel.
Antes de crear o noso modelo, necesitamos importar o noso conxunto de datos. Usando o seguinte código podes facelo:
importar pandas como pd
datos = pd.read_csv('diabetes.csv')
x = data.drop(“Resultado”)
y = datos[“Resultado”]
Aquí estamos usando o pandas biblioteca para poder manipular os datos do noso ficheiro CSV, read_csv() é unha función integrada de Pandas que nos permite almacenar os valores do noso ficheiro nunha variable chamada "datos".
A variable x contén o noso conxunto de datos sen os datos do resultado (etiquetas). Conseguimos isto coa función data.drop() que elimina as etiquetas de x, mentres que y só contén os datos do resultado (etiqueta).
Modelo secuencial de construción
Paso 1: Importación de bibliotecas
En primeiro lugar, necesitamos importar TensorFlow e Keras, xunto con certos parámetros necesarios para o noso modelo. O seguinte código permítenos facelo:
importar tensorflow como tf
desde tensorflow import keras
desde tensorflow.keras.models importación secuencial
de tensorflow.keras.layers importar Activación, Denso
de tensorflow.keras.optimizers importar Adam
desde tensorflow.keras.metrics import categorical_crossentropy
Para o noso modelo estamos importando capas densas. Estas son capas totalmente conectadas; é dicir, cada nodo dunha capa está totalmente conectado con outro nodo da seguinte capa.
Tamén estamos importando un activación función necesaria para escalar os datos enviados aos nodos. Optimizadores tamén foron importados para minimizar as perdas.
Adam é un optimizador de renome que fai que os nosos cálculos de nodos de actualización de modelos sexan máis eficientes, xunto con entropía_categórica que é o tipo de función de perda (calcula a diferenza entre os valores de etiqueta reais e previstos) que usaremos.
Paso 2: Deseño do noso modelo
O modelo que estou creando ten unha capa de entrada (con 16 unidades), unha oculta (con 32 unidades) e unha de saída (con 2 unidades). Estes números non están fixados e dependerán enteiramente do problema dado.
Establecer o número correcto de unidades e capas é un proceso que se pode mellorar coas horas extras coa práctica. A activación correspóndese co tipo de escalado que imos realizar nos nosos datos antes de pasalos por un nodo.
Relu e Softmax son funcións de activación coñecidas para esta tarefa.
modelo = Secuencial([
Denso (unidades = 16, forma_entrada = (1), activación = 'relu'),
Denso (unidades = 32, activación = 'relu'),
Denso (unidades = 2, activación = 'softmax')
])
Aquí tes como debería ser o resumo do modelo:
Adestramento do modelo
O noso modelo adestrarase en dous pasos, o primeiro será a compilación do modelo (unir o modelo) e o seguinte axustar o modelo nun conxunto de datos determinado.
Isto pódese facer usando a función model.compile() seguida da función model.fit().
model.compile (optimizador = Adam (tasa_aprendizaxe = 0.0001), perda = 'entropía_binaria', métricas = ['precisión'])
model.fit(x, y, epochs = 30, batch_size = 10)
Especificar a métrica de "precisión" permítenos observar a precisión do noso modelo durante o adestramento.
Dado que as nosas etiquetas teñen forma de 1 e 0, utilizaremos unha función de perda binaria para calcular a diferenza entre as etiquetas reais e previstas.
O conxunto de datos tamén se está dividindo en lotes de 10 (batch_size) e pasarase polo modelo 30 veces (épocas). Para un conxunto de datos dado, x serían os datos e y serían as etiquetas correspondentes aos datos.
Modelo de proba usando predicións
Para avaliar o noso modelo, facemos predicións sobre os datos da proba usando a función predict().
predicións = model.predict(x)
E xa está!
Agora deberías ter unha boa comprensión do Aprendizaxe profunda aplicación, redes neuronais, como funcionan en xeral e como construír, adestrar e probar un modelo en código Python.
Espero que este tutorial che ofreza o inicio para crear e implementar os teus propios modelos de aprendizaxe profunda.
Indícanos nos comentarios se o artigo foi útil.
Deixe unha resposta