Machine learning

Intelixencia artificial

Seguramente oíches falar ultimamente da intelixencia artificial, pois todos os días utilizamos aplicacións que fan uso destas técnicas: cando usas un tradutor automático, cando o móbil se desbloquea co recoñecemento da túa cara, cando che sae publicidade xusto de cousas similares ás que estiveches mirando na rede con anterioridade, cando Netflix che recomenda películas e series, cando google che solta iso de “quizais quixeches dicir …” e suxíreche outra palabra de busca, cando o xestor de imaxes recoñece as persoas que hai nas túas fotografías ou cando ves que xa están a desenvolver coches autónomos que non necesitan condutor. Como serán capaces estes coches de identificar o que teñen arredor e decidir que facer en consecuencia?

Aprendizaxe automática

Ben, pois unha das técnicas utilizadas na intelixencia artificial é a coñecida como machine learning ou aprendizaxe automática. Trátase dun conxunto de algoritmos cos que se constrúe un modelo de clasificación a partir de conxuntos de datos coñecidos. Con este modelo a máquina vai ser capaz de clasificar datos de entrada novos que non eran coñecidos de antemán pero que se axustan aos parámetros do modelo.

Por exemplo, a partir das primeiras imaxes de cans boxer a máquina será quen de recoñecer que a segunda imaxe corresponde a un boxer, aínda que non a tivese como dato inicial. O mesmo podemos facer con textos, audio ou datos numéricos. Por certo, a idea de facer unha aplicación para recoñecer razas de cans é de Tania, de 4ºESO :-)

 

Hai algunhas aplicacións que nos van permitir probar isto da aprendizaxe automática.

Machine Learning for Kids

Unha aplicación que podemos usar é Machine Learning for Kids (ML4K), que permite o recoñecemento de imaxes, textos e datos, e utilizar despois o modelo para crear aplicacións en scratch ou app inventor. Ten unha chea de actividades de exemplo que podes facer.

No seguinte exemplo podedes ver como podemos facer unha aplicación que recoñeza números debuxados a man:

Learning Machine Learning

Outra aplicación é LearningML, que consta dun editor e dun clon de scratch. Aínda está en proceso de desenvolvemento e iremos vendo como co tempo van aumentando as súas funcionalidades, pero de momento xa podemos ir utilizándoa para o recoñecemento de imaxes e textos. Polo de agora é algo máis limitada que a anterior, pero ten a vantaxe de que non é necesario rexistrarse (agás se queres gardar os proxectos no servidor), que podemos usala en galego e que podemos utilizar imaxes cargadas desde o ordenador para a xeración do modelo.

Na súa web podemos atopar tamén algúns videotitoriais para aprender a manexala.

Vou amosar un par de exemplos que fixen:

Recoñecemento de textos

Podemos utilizar o editor para facer unha clasificación de diversas clases de textos e, despois, programar unha aplicación de scratch que sexa quen de clasificar as mensaxes de entrada. Poderiamos facer un xogo de preguntas e respostas ou, como no seguinte exemplo, un asistente virtual:

Podes descargar aquí os ficheiros Asistente.json para o editor e Asistente.sb3 para scratch: Asistente.zip

Recoñecemento de imaxes

Para recoñecer imaxes fixen unha aplicación de recoñecemento de xestos da man. A través da cámara web o programa recolle as imaxes da man e clasifícaas segundo o modelo realizado con anterioridade a partir tamén de imaxes da cámara. Segundo sexa esta clasificación un debuxo tentará imitar o xesto que realiza a man.

Tamén podemos facer un programa algo máis complexo. Neste caso xogamos a pedra, papel e tesoiras contra o ordenador. Quen acade antes 3 puntos gaña.

Podes descargar aquí os ficheiros pedra-papel-tesoiras.json para o editor e pedra-papel-tesoira.sb3 para scratch: PedraPapelTesoiras.zip

A programar!

Pódensenos ocorrer miles de cousas máis. A verdade é que estas aplicacións abren un mundo de posibilidades para a aprendizaxe da programación, pois permiten a creación de programas que incorporan o machine learning. Na programación clásica, por chamala dalgunha maneira, os programas consisten nunha serie de instrucións que cobren todas as opcións ás que se enfronta o ordenador e a máquina fai exactamente o que lle pedimos. Con estas técnicas de intelixencia artificial é o ordenador quen debe aprender duns datos e apañarse para obter resultados a partir de datos que non estaban definidos inicialmente. Terá que buscarse a vida, actuar cun pouco máis de intelixencia :-)


A música do ordenador cuántico IBM Q

Hai tempo que amosamos por aquí o artigo “a música das fábricas“, no que viamos como as máquinas eran capaces de facer ritmos e son do máis acompasado. Hoxe temos aquí a música que fai un ordenador cuántico IMB Q. Podédela escoitar a partir do minuto 1:32.

A computación cuántica aínda está en cueiros, non pode substituír a electrónica, pero todo se andará. De momento podemos ir vendo de que vai, coñecer un pouco o seu interior e escoitar a súa música.

Máis información: IMB Q. The future is quantum


Dividir entre cero cunha calculadora mecánica

lim0Quen estudou matemáticas no Bacharelato ten claro que a división dun número entre cero é unha indefinición, pois cando x tende a cero, n/x aproxímase a infinito. Isto soemos simplificalo dicindo que calquera número dividido entre 0 dá infinito.

lim01

Se facemos esta operación nun programa informático, a división por cero é considerada coma un erro lóxico. No caso de que se produza dita operación, os procesadores matemáticos son capaces de detectala e, nese caso, entregan un informe de erro que detén o proceso que se está a executar e evita que a aplicación entre nun bucle infinito.

SyntaxErrorProba dividir entre cero na túa calculadora de peto e verás como a resposta é unha mensaxe de erro ou de operación non válida.

Pero que sucede nunha calculadora mecánica? Podes ver o resultado neste vídeo:

[youtube: Esto es lo que pasa si divides entre 0 con una calculadora mecánica.] (Vía: @iagovarela)

Nestas máquinas os cálculos realízanse facendo xirar sucesivos engrenaxes un número determinado de veces segundo a operación que se realice. No caso das divisións, o procedemento é similar ao método que utilizamos cando dividimos manualmente, a base de restar sucesivamente para encontrar cada díxito do resultado. Ao ser o divisor igual a 0, a resta execútase sempre, pero o resultado non cambia, polo que a operación se repite infinitamente intentando obter un resultado. A máquina entrou nun bucle infinito!

Algunhas calculadoras mecánicas máis modernas xa incluían un “E” para indicar erro cando se producía, pero enseguida chegaron as calculadoras electrónicas que fixeron que estas bonitas e ruidosas máquinas pasasen á historia.


Cor RGB

RGBcolor-300x270Para representar unha cor nunha pantalla adóitase utilizar o modelo de cor RGB (R= red, vermello; G= green, verde; B= blue, azul).  O código de cores RGB baséase na mestura das cores vermello, verde e azul con maior ou menor intensidade para acadar toda a gama completa.  Cada unha das cores RGB pode tomar un valor entre 0 e 255 en decimal ou entre 00 e FF en hexadecimal, co que se consegue un total de 256 3 = 16.777.216 cores distintas.

Por exemplo:

Cor dec hex Cor dec hex
vermello 255,0,0 #FF0000 amarelo 255,255,0 #FFFF00
verde 0,255,0 #00FF00 ciano 0,255,255 #00FFFF
azul 0,0,255 #0000FF maxenta 255,0,255 #FF00FF
branco 255,255,255 #FFFFFF negro 0,0,0 #000000

 

Na seguinte aplicación feita con Scratch podes ver como varía a cor segundo os valores RGB que elixas:
[Scratch: Cor RGB]

corscratch1Cor no Scratch

No Scratch 1.4, cando queremos definir a cor do lapis aparécenos unha paleta na que podemos seleccionar a cor desexada. Porén, no Scratch 2.0 só se pode seleccionar unha cor que estea visible na pantalla.

Unha opción é crear coa ferramenta de debuxo un sprite que conteña as cores que queremos utilizar e seleccionalas dende alí.

Tamén podemos definir a cor mediante un valor que vai desde 0 ata 200, que corresponde á seguinte paleta: Pen_color

Pen_color2

Se queremos unha cor específica definida mediante o código RGB, temos tres opcións:

corscratch2

Control dun LED RGB con arduino

rgb-led

Un LED RGB  é un LED que incorpora tres LEDs no mesmo encapsulado, de xeito que se poden formar miles de cores axustando de maneira individual a intensidade de cada LED. O tres LEDs poden estar unidos polo cátodo ou polo ánodo.

Dependendo da intensidade de cada un dos LEDs RGB obteremos diferentes cores. O que imos facer é enviar un valor entre 0 e 255 a cada un dos pins PWM dos LEDs.

Na seguinte simulación feita con 123D circuits podes ver un o código utilizado para obter diferentes cores dun LED RGB.
Simulación:

Se queredes controlar un LED RGB conectado a unha placa arduino a través do móbil mediante Bluetooth podedes ver este proxecto de instructables.

rgbBluetooth


Programación e robótica en galego

Con motivo da celebración do V Día da Ciencia e da Tecnoloxía en Galego temos varias actividades interesantes para participar desde os departamentos de tecnoloxía dos centros de educación secundaria:

Videoconferencia sobre programación en galego

foto_manuel_caeiroaO vindeiro mércores 5 de novembro, a Coordinadora Galega de Equipos de Normalización e Dinamización Lingüística (CGENDL) convida ao alumnado de 2º ciclo de ESO e Bacharelato a participar nunha videoconferencia sobre programación en galego. O relator é Manuel Caeiro, doutor en enxeñaría de telecomunicación na Universidade de Vigo, que falará da historia da programación desde un punto de vista moi básico e práctico e nos animará a programar en galego a través de ferramentas como Scratch e Squeark.

Tedes toda a información na web da CGENDL

En http://codigooctopus.org tedes unha chea de exemplos de programas en galego realizados con Scratch.

Concurso “Inventa en galego”

igaciencia2014aNeste concurso organizado por Igaciencia e patrocinado pola Secretaría Xeral de Política Lingüística e EducaBarrié grupos de alumnos e alumnas deberán desenvolver unha aplicación para móbiles e tabletas Android utilizando App Inventor. O prazo límite de presentación de traballos é o 9 de novembro de 2014

Tedes máis información na web de igaciencia: Inventa en galego

Concurso “Sensores para todos”

Tamén desde Igaciencia, co patrocinio de Educa Barrié e a Domus, invítannos a desenvolver aplicacións de robótica con Lego e Arduino para recoller datos cos seus sensores e representar os resultados obtidos. Recolleranse os traballos ata o 9 de novembro.

Tedes máis información na web de igaciencia: Sensores