redes neuronales aplicadas a la detección en canal gausiano

Anuncio
REDES NEURONALES APLICADAS A LA DEMODULACIÓN
EN CANAL GAUSIANO
Luis Recuenco Pérez
José Romero Huertas
Alejandro Rivera Lavado
C/ Miguel Hernández 3 Bajo B
+34666072558
C\ Hermanos García Noblejas No 188
+34635337299
C\ Pocilla No 7, 2ºA
+34666906622
100039144 @alumnos.uc3m.es [email protected] [email protected]
ABSTRACT
En este documento hablaremos de las posibilidades ofrecidas por
las redes neuronales en la demodulación digital en canal gausiano
Categoría y descripción del tema.
D.0 [General]
Términos generales
Viabilidad.
Keywords
reinformación que se vayan a transmitir deben tener su
equivalente en el alfabeto de símbolos para la comunicación
digital. A menudo, estos símbolos se agrupan formando
constelaciones de símbolos. Existen muchos tipos de
constelaciones, las más conocidas son N-QAM, cuya
representación se puede observar en la figura 1 para unos valores
de N iguales a 4 y 6. Esta modulación transporta log2N bits de
información en cada símbolo transmitido. Así, para las
constelaciones de la figura, se transmiten 2 y 4 bits por cada
símbolo respectivamente.
Red neural, canal gausiano, demodulación, probabilidad de error.
1.INTRODUCCIÓN A LOS SISTEMAS DE
COMUNICACIÓN.
Un sistema de comunicación es aquel método o conjunto de
métodos a través de los cuales se puede establecer una
comunicación satisfactoria. Múltiples ejemplos de sistemas de
comunicación pueden ser fácilmente encontrados en todos los
ámbitos de la vida. Existen, además, muchos tipos de sistemas de
comunicación, que pueden clasificarse de múltiples formas. Así,
por ejemplo, algunos son propios de los seres humanos, como el
lenguaje o en código morse, y otros propios de los animales, como
los hábitos de cortejo del pavo real. Todos ellos tienen la misión
de transmitir una cierta información de un individuo a otro, y se
diferencian en la forma en la que son transmitidos, el canal en que
son transmitidos, y la forma de ser recibidos. Nosotros
centraremos nuestro análisis en un tipo de sistemas de
comunicación relativamente reciente, llamado comunicación
digital.
1.1Introducción a sistemas de comunicación
digitales.
Un sistema de comunicaciones digitales basa su funcionamiento
en que la información a transmitir se codifica previamente para
traducir el alfabeto original en un alfabeto de símbolos finito que
constituyen los símbolos digitales. Todos los símbolos
Permission to make digital or hard copies of all or part of this work for
personal or classroom use is granted without fee provided that copies are
not made or distributed for profit or commercial advantage and that copies
bear this notice and the full citation on the first page. To copy otherwise, or
republish, to post on servers or to redistribute to lists, requires prior specific
permission and/or a fee.
Figura 1. Esquema de modulaciones 4-QAM y 16-QAM
Otras modulaciones cuyo uso está muy extendido son las N-PSK,
en la que la información de los símbolos no va contenida en la
amplitud de estos en la modulación como es el caso de las
modulaciones N-QAM, si no que está contenida en su fase. Así
mismo existen muchos otros tipos de constelaciones y de variantes
de las expuestas.
La información codificada y modulada, es transmitida a través de
un cierto canal. Dicho canal puede comportarse de muy diversas
formas en cuanto a la atenuación y distorsión sufridas por la señal
atraviesa dicho canal. Un ejemplo de canal es el canal gausiano, el
cual se descibirá a continuación.
1.2Breve repaso histórico de las
comunicaciones digitales
Se puede considerar que las primeras transmisiones digitales se
llevan acabo tras la invención, por parte de Alfred Vail y Samuel
Morse en 1835, de lo que se llamó código morse [1]. Este sistema
permitía codificar las letras del alfabeto por medio de puntos y
rayas que se distinguían en transmisión por medio de la duración
de los tonos. Este es efectivamente un sistema digital, puesto que
cumple con las especificaciones antes mencionadas. Dicho
sistema se usó, inicialmente, en el telégrafo. De esta forma, el
sistema de comunicaciones se basó en un sistema de transmisión
de pulsos eléctricos por los tendidos eléctricos dispuestos a tal
efecto. Podemos ver en la figura 2 como es el alfabeto del código
morse, compuesto por puntos y rayas.
Además, dicho canal gausiano distorsiona la señal introduciendo
en ella una cierta interferencia intersimbólica (ISI), cuyo principio
se basa en la adición de muestras retrasadas de la señal en un
instante dado. En la figura 3 podemos apreciar el efecto de la ISI
sobre una señal conformada por pulsos distorsionados por el
canal. Se puede apreciar como la contribución de símbolos
anteriores suma o resta potencia de señal al símbolo actual, lo que
dificulta la tarea de detección de la señal.
Figura 3. Efecto de la ISI sobre una señal
Figura 2. Alfabeto del código morse
A partir de aquí, tiene lugar un desarrollo de las comunicaciones
analógicas, con importantes aportaciones como el teléfono, aun en
el S. XIX. Con el paso al S. XX, tiene lugar la invención de los
teletipos, los cuales empiezan a usarse para transmitir datos con
códigos de 5 bits, lo que limitaba el número de caracteres a 32. La
evolución de las comunicaciones digitales experimentó un gran
auge con el desarrollo de los protocolos TCP/IP por parte de
DARPA, así como las comunicaciones móviles y la televisión y la
radio. El aporte social que las comunicaciones digitales han tenido
en nuestra sociedad es evidente. Terminales móviles con
capacidades en constante evolución ofreciendo todo tipo de
servicios multimedia, televisiones con cada vez mejor calidad de
visión gracias a los códigos MPEG desarrollados a lo largo de los
años y por supuesto, Internet, cuyo filosofía de funcionamiento es
intrínsecamente digital, sobre redes digitales en el tronco y
analógicas en lo puntos terminales de la red. Actualmente, la gran
mayoría de la inversión para el desarrollo de las comunicaciones
está dirigida a la evolución de las comunicaciones digitales, sobre
todo para las grandes aplicaciones de consumo descritas
anteriormente. Quedando las comunicaciones analógicas
utilizadas para aplicaciones de más específicas.
1.3Canal gaussiano
El efecto de un canal gaussiano se basa en añadir un ruido con
distribución gausiana de media nula y una cierta varianza N0.
Dicha distribución tiene la forma:
fN =
1
2π N 0
e
−
x2
N0
Estos dos efectos son perjudiciales a la hora de recuperar la
información transmitida. Aunque los efectos de la ISI son
notorios, el peor efecto de los descritos es el del ruido gausiano.
Así, para modelar el proceso de comunicación digital en un canal
gausiano, necesitamos un esquema, bastante simplificado, como el
que se muestra en la figura 4.
Figura 4. Esquema simplificado de sistema de comunicación
digital gausiano
En dicho esquema podemos apreciar tres partes diferenciadas. La
parte del transmisor que comprende todos los mecanismos para
acondicionar la señal transmitida descritos anteriormente.
También se define la parte del canal, donde encontramos un
elemento aditivo de ruido, y otro cuya función de transferencia
temporal llamamos f(t). Dicha función temporal describe los
efectos de interferencia intersimbólica descritos anteriormente.
Típicamente, dicha función de transferencia podrá ser modelada
como un tren finito de deltas desplazadas, y típicamente
decayendo en amplitud. Así, f(t), podría ser una señal de la forma
siguiente:
f (t) =
N
∑
n= 0
a n δ ( t − nT ( n ) )
Donde se ha supuesto una duración de efecto de canal de N
símbolos. Como se puede apreciar en la relación anterior, cada
delta está multiplicada por un coeficiente de escala an, el cual irá
decreciendo a medida que n aumente. Como puede apreciarse, se
ha supuesto que teóricamente los intervalos entre las deltas
pueden ser variables, y por tanto, dependientes de n. Se ha de
notar que el modelado propuesto de la función de transferencia
para el canal es bastante simplificado y solo contempla la adición
de muestras retardadas. Aun así, este canal incluye efecto de
memoria, el cual es muy importante a la hora de analizar el
funcionamiento de sistemas de comunicación digitales sobre canal
real.
menor error cuadrático medio (MMSE). Otra técnica utilizada, a
menudo en conjunción con las anteriores, es la detección de
secuencias mediante el algoritmo de viterbi [2], ya sea en su
versión de decisor duro, como la versión de decisor blando (la
cual reduce apreciablemente la probabilidad de error con respecto
a la versión dura, por lo cual se paga un precio en coste
computacional). EN la figura 5 se puede observar un ejemplo de
este algoritmo decidiendo sobre una secuencia decidida:
Los coeficientes an tienen un comportamiento de decaimiento
exponencial. Se ha escogido este modelo por ser el que más se
ajusta al comportamiento real de ciertos canales. Cualquier otra
distribución sería válida para nuestro estudio.
La suma de los efectos de la función de transferencia de canal y la
adición de ruido gausiano conforma un esquema, simplificado, de
canal gausiano.
La última parte del esquema de la figura 4, se corresponde con la
parte receptora del sistema. Esta parte comprende la detección de
la señal procedente del medio, su acondicionamiento y
posteriormente, la señal se demodula y decodifica. Este proceso
debe hacerse de tal forma que se minimice la probabilidad de
error. En es punto, hacemos la distinción entre probabilidad de
error de bit, y probabilidad de error de bloque. La probabilidad de
error de bloque define la probabilidad de que un bloque se reciba
de forma incorrecta. Se considera que un bloque se ha recibido de
forma incorrecta cuando uno o más de los bits que lo componen
ha sido recibido de forma incorrecta. La probabilidad de error de
bit define la probabilidad de que se reciba un bit de forma
incorrecta. Así, la probabilidad de recibir un bloque de forma
incorrecta es:
PeB = 1 − (1 − Peb )
L
Siendo PeB la probabilidad de error de bloque, Peb la probabilidad
de error de bit y L, la longitud (en bits) del bloque. Notar que
siempre (a menos que Peb sea idénticamente 0) la probabilidad de
error de bloque va a ser mayor que la probabilidad de error de bit.
Sabiendo esto, y dándonos cuenta de que en las comunicaciones
digitales reales, los mensajes mandados tienen incluso centenas de
miles de bits, podemos llegar a imaginar lo crítico que resulta
reducir al máximo Peb.
Para acometer esta tarea, existen multitud de técnicas que
consiguen reducir esta probabilidad en gran medida, haciendo
posible que las comunicaciones sean cada vez a mayor velocidad.
Alguna de estas técnicas se basan en filtros igualadores que
intentan modelar la señal de forma que el efecto del canal sea
amortiguado. Estas técnicas ofrecen un buen resultado, pero
necesitan tener cierta información del canal en el cual se van a
establecer las comunicaciones. Las dos técnicas de igualación más
extendidas son los filtros forzador de ceros (ZF) y el filtro de
Figura 5. Ejemplo de decisión de secuencia por medio del
algoritmo de viterbi
Esta técnica consigue reducir mucho la probabilidad de error,
dado que utiliza teoría de estados para decidir sobre la secuencia
más probable aunque se haya producido un error en algún bit.
Dicha técnica también se utiliza a menudo con otra que consiste
en introducir modulaciones TCM en el canal, mediante la
introducción de códigos convolucionales. Dichos códigos
protegen con la constelación los símbolos que tienen más
probabilidad de ser confundidos durante la transmisión. Dicha
protección se realiza de forma que dichos símbolos se encuentren
muy separados en la constelación, de forma que la energía que el
canal debe aportar para hacernos cometer un error sea lo más
elevada posible, reduciendo así la probabilidad de que dicho
suceso ocurra.
1.4Canal implementado
Para nuestro estudio, utilizaremos un modelo de canal gausiano,
cuyos efectos son la adición de ruido gausiano de media nula y
una cierta varianza. El canal también introducirá una interferencia
intersimbólica tal la señal se vea afectada por muestras anteriores
al instante actual. Un sistema de comunicaciones completo,
debería ser capaz de tratar en este caso, un canal que tuviera una
respuesta temporal que pudiese expresarse como f(t) antes
definida.
Sin embargo, y puesto que en este estudio representamos un
espectro reducido de las posibilidades que este sistema presenta,
nos limitaremos a introducir una interferencia intersimbólica tal
que los retardos introducidos por el canal en cada una de las deltas
de la función f(t) sean constantes y además, múltiplos enteros de
un período de bit.
Dicha función de transferencia puede por tanto quedar expresada
como sigue:
f1 ( t ) =
N
∑
n= 0
a nδ ( t − nTbit )
Donde hemos denominado a este subconjunto de las funciones
abarcadas por f(t) como f1(t). De ahora en adelante, se define la
función de transferencia temporal del canal utilizado en este
estudio como la señal f1(t) indicada. Recordamos que esta no es
una limitación del sistema utilizado, si no una limitación del
estudio realizado.
Esta simplificación hace que el canal presente una interferencia
intersimbólica tal que solo tengamos pulsos centrados en los
instantes coincidentes con múltiplos enteros del periodo de bit de
la señal, omitiendo las variaciones temporales de este.
Para la realización del estudio, además, se ha implementado toda
la parte del transmisor tal como se esquematiza en la figura 4. Se
ha realizado esta tarea para disponer de unas simulaciones fiables
según el canal escogido. El modulador escogido es capaz de servir
la señal modulada de dos formas distintas:
Figura 6. Esquema de modulación binaria FSK
1.4.1Modulaciones implementadas
Así, las modulaciones implementadas por nuestro programa son
las siguientes:
FSK: (Frequency shift keying) [3] Señal modulada en frecuencia.
En los sistemas de modulación por salto de frecuencia, FSK, la
señal moduladora hace variar la frecuencia de la portadora, de
forma que la señal modulada resultante codifica la información
asociándola a valores de frecuencia diferentes. Para este tipo de
modulación hemos implementado un conmutador que selecciona
entre dos portadoras distintas a frecuencia f 0 y f1, lo cual conforma
el modulador más simple para este tipo de moduladora. En la
figura 6 podemos apreciar un esquema de esta modulación.
ASK: (Amplitude shift keying). En La modulación por
desplazamiento de amplitud se representan los datos digitales
como variaciones de amplitud de la onda portadora. Para este
estudio hemos optado por una modulación ASK simple que se
basa en un conmutador que hace variar la amplitud de la señal
conforme a los símbolos transmitidos. Las variaciones en la señal
moduladora producen una variación en la señal portadora
haciendo que su amplitud varíe entre dos amplitudes arbitrarias,
sean A0 y A1. Podemos ver un esquema de modulación ASK en la
figura 7.
Una vez más, la elección de señales moduladas de forma binaria
responde a la conveniente simplicidad de este estudio, más que a
imposiciones del proyecto en sí. Podríamos haber escogido
cualquier otro tipo de señal modulada, o podríamos haber
escogido constelaciones con más símbolos. Este estudio
simplificado, se aborda con las señales descritas.
Figura 7. Esquema de modulación binaria ASK
1.5Receptor implementado
Este estudio presenta una forma alternativa para establecer una
comunicación digital. En nuestro caso, tratamos de reducir la
probabilidad de error de símbolo mediante la demodulación y
decodificación de la señal recibida mediante el uso de una red
neural debidamente entrenada. Previamente a la descripción del
proyecto, en la siguiente sección se expondrá un ligero repaso al
concepto de red neural.
2.Redes neuronales
Las redes neuronales intentan imitar el funcionamiento del
sistema nervioso de los animales, en los cuales, las neuronas son
excitadas mediante impulsos eléctricos en sus entradas y ofrecen
otro impulso eléctrico a su salida. Se trata de imitar este
comportamiento debido a la robustez ofrecida por el sistema
nervioso biológico. La salida de cada neurona vendrá definida por
tres funciones: La función de excitación, que por lo general
consiste en el sumatorio de cada una de las entradas multiplicada
por el peso de esa entrada. Este peso puede ser positivo
(excitatorio), o negativo (inhibitorio). [4] Función de activación,
que modifica la anterior. si no existiera esta función, la salida sería
idénticamente la salida de la función de excitación. Por último se
define la función de transferencia que se aplica al valor devuelto
por la función de activación. Su función es la de acotar la salida
de la neurona y suele venir determinada por la función que se le
desee dar a dicha neurona.
En oposición al paradigma clásico de programación en ingeniería
software, al aproximación al problema basada en redes neurales
parte de un conjunto de datos a la entrada suficientemente
expresivo de dicho problema. El objetivo último es conseguir que
la red aprenda de forma totalmente automática las propiedades
que se desea que tenga el sistema. Desde este punto de vista, el
diseño de una red neuronal está más basado en cuestiones como la
elección del tipo de red, variables a tener en cuenta y la selección
de los datos previos que componen los datos de entrenamiento.
Dichos datos, como se ha mencionado tienen que ser lo
suficientemente expresivos como para lograr con ellos un
entrenamiento suficientemente expresivo para garantizar un
funcionamiento óptimo del sistema.
Las características de las redes neuronales las hacen notablemente
apropiadas para aquellas aplicaciones en las cuales no se dispone
de un modelo identificable que pueda ser programado, pero por el
contrario sí que se dispone de un cierto número de muestras de esa
entrada. Se las considera especialmente robustas frente al ruido, lo
que las hace particularmente atractivos para la aplicación que
queremos estudiar en este trabajo. Otra característica de las redes
neuronales es que son fácilmente paralelizables.
Las redes neurales son muy utilizadas en campos como la
clasificación y reconocimiento de patrones tanto de voz como de
imágenes. Se han utilizado para predecir y encontrar patrones de
fraude económico, hacer predicciones en el mercado financiero,
del tiempo atmosférico, y otras muchas aplicaciones de este tipo
de complejidad.
Incluso algunos tipos especiales de redes neurales han sido
aplicadas en conjunción con algoritmos genéticos para
implementar controladores para robots. Dentro de este campo, se
ha creado una disciplina para tratar la evolución de redes neurales
mediante algoritmos genéticos, cuyo nombre es robótica
evolutiva. Ciertos parámetros de la red tales como la topología de
dicha red, algoritmo de aprendizaje, etc. constituyen en estos
casos el genoma utilizado por el algoritmo genético. [5] La
adecuación de la red viene dada por la propia del comportamiento
que se observe en el robot que está siendo controlado. Cmo
resultado de estas actividades podemos encontrar cosas como
programas que simulan la actividad de un ser humano dentro de
un juego, para hacer la experiencia más realista para el jugador
real.
Un pequeño esquema de red neural se puede observar en la figura
8, en el cual, existen tres capas de neuronas. Esta configuración de
red neuronal, es una de las más conocidas y se denomina
perceptrón multicapa.
Figura 8. Esquema de red neural conocido como perceptrón
multicapa
3.Consecuencias del uso de red neuronal en
sistema de comunicación digital en canal
gausiano.
La utilización de una red neural dentro del campo de las
comunicaciones digitales va a conllevar una serie de ventajas
frente al uso de los sistemas tradicionales. Algunas de estas
ventajas van a ser descritas a continuación:
3.1Autodetección de modulación digital
En las secciones anteriores se ha venido introduciendo el hecho de
que una red neuronal se adapta a la resolución del problema si ésta
ha sido debidamente entrenada. En nuestro caso vamos a explotar
dicha característica para conseguir un receptor universal para
códigos digitales. Esto quiere decir que si teniendo una serie de
datos expresivos de una cierta modulación digital, vamos a ser
capaces de ajustar la red neuronal para hacer que funcione con
dicha modulación sin la necesidad de hacer un cambio ni de
hardware ni de software. Gracias a esto, un posible sistema real
implementado con esta técnica podría abaratar costes a la hora de
trabaja con una u otra modulación digital.
El sistema también es capaz de adaptarse, por esta misma razón a
los cambios de modulación como por ejemplo el cambio de una
4ASK a una 16ASK. Como hemos especificado anteriormente,
nuestra implementación ha sido pensada solo para las dos
modulaciones más simples de implementar, ASK y FSK.
Como también ha sido expresado con anterioridad, esta
simplificación solo responde a términos de simplicidad en la
implementación. Un análisis más profundo debería conducir a la
determinación de señales de todo tipo sin más que aplicando un
entrenamiento neuronal adecuado para dicha modulación.
3.2Autodetección de periodo
Otra de las propiedades que pueden ser derivadas de la utilización
de una red neuronal para la realización de un sistema de
comunicaciones digital es que va a proveer a nuestro sistema de
autodetección de periodo. Esta no es una propiedad intrínseca de
la técnica utilizada pero se puede conseguir mediante técnicas de
entrenamiento especializado de la red neural, o técnicas de
detección de repetitividad del periodo. Esta tarea puede
simplificarse sustancialmente si las frecuencias utilizadas son
múltiplo entero de alguna frecuencia fundamental, como podría
ser la máxima frecuencia permitida por el teorema de Nyquist.
La técnica de usar entrenamiento especializado, supone enviar una
secuencia del estilo “10000…” representada en bits, y realizar las
observaciones de las entradas del primer grupo de neuronas y
seleccionar aquellas cuya salida es ‘1’.
También podemos utilizar una técnica que nos permita recuperar
el periodo de muestreo por medio de la detección de repetición en
las secuencias. El método es entrenar con una secuencia del tipo
“101010101…” Al entrenar con esta secuencia, los pesos
neuronales deberían tener una cierta correlación de forma de
forma que se repitieran de forma secuencial. El siguiente paso es
anular los pesos de las entradas que excedan del periodo. De esta
forma, cuando la red neuronal lea la señal lo hará de N en N
muestras (siendo N el periodo de la señal en muestras por bit).
Esto se realiza contando los pesos de las entradas consecutivas
que contribuyen a que la salida total de la red sea ‘1’.
En nuestro desarrollo, no hemos implementado esta
funcionalidad, y hemos introducido tener una tasa de 1000
muestras por bit. Esto es:
muestras
N = 1000
bit
Una vez más, se ha decidido no implementar esta funcionalidad
por razones de simplicidad, quedando patente la posibilidad de un
desarrollo más profundo que contemple estas posibilidades.
usuaria es capaz de recuperar la señal x(t) que se transmitió por el
canal gausiano.
Esto es así gracias al carácter adaptativo de la red neuronal, que
una vez entrenada es capaz de decidir de una forma robusta frente
a entradas con un cierto ruido. Cualitativamente, la red se encarga
de buscar el patrón conocido que más se adecue a la señal que le
llega. La red utilizará entonces la ponderación efectuada sobre los
pesos para penalizar aquellas entradas que en los entrenamientos
hubiesen inducido a errores mientras que se premia a aquellas
entradas que contribuyeran a escoger la opción correcta.
Por lo tanto, nuestro sistema se opone a los efectos perjudiciales
del canal gausiano, sin más que conocer una serie de datos de
entrenamiento. Tales datos podrían ser obtenidos mediante el
envío de mensajes de referencia conocidos por el canal a utilizar.
El sistema también reaccionaría ante los cambios de canal sin más
que actualizando los pesos de las neuronas.
Gracias a todos los puntos anteriormente expuestos, observamos
que gracias a la elección de un sistema inteligente como es la red
neuronal, somos capaces de establecer un sistema de
comunicaciones factible, y con unas especificaciones a priori muy
interesantes.
A continuación se expone la forma en la que se ha realizado el
estudio. Más concretamente se indica como ha sido creada la red
neuronal para acometer el estudio del sistema de comunicaciones
digital sobre canal gausiano que se ha explicado en las secciones
anteriores.
4.Descripción de la red neuronal como
demodulador
Suponiendo que el canal ha sido implementado como se describió
en las secciones anteriores, pasaremos a describir el
funcionamiento de la red neural. Inicialmente, podemos observar
un esquema de la misma, con el que poder comenzar su
descripción. Dicho esquema puede observarse en la figura 9.
3.3Cancelación de ruido es ISI
Este modelo de sistema de comunicaciones basado en detección
por medio de red neural, tiene su mayor ventaja a la hora de
analizar el comportamiento del mismo frente al canal definido
como:
y ( t ) = x ( t ) ∗ f1 ( t ) + N ( t )
y ( t ) = x( t ) ∗
y( t ) =
N
∑
n= 0
N
∑
n= 0
anδ ( t − nTbit ) + N ( t )
an x( t − nTbit ) + N ( t )
El comportamiento del sistema frente la señal de llegada y(t) tiene
ventajas en lo que a calidad de la señal se refiere. Gracias al
entrenamiento sufrido por las neuronas en la red, el sistema de
comunicaciones es capaz de oponerse a la interferencia
intersimbólica y al ruido aditivo de tal forma que la aplicación
Figura 9. Esquema de la red neural implementada
Donde podemos apreciar un esquema incluso más simplificado
que el del perceptrón multicapa al no disponer de capas ocultas en
la red. Aun así, nuestra red dispone de la capa de entrada, la cual
dispone de un número configurable de neuronas. En realidad, el
parámetro a configurar es el número de entradas de cada neurona.
Una vez seleccionado este parámetro, la propia red selecciona el
número de neuronas de la primera capa. En total, se tiene que
tener un número de entradas igual que el número de muestras por
periodo de la señal. En nuestro caso hemos escogido una cifra de
1000 muestras por periodo de bit. Eso significa, por tanto, que
tenemos 1000 entradas a la red neuronal.
−
El proceso es el siguiente. Cada periodo de bit se introducen todas
las muestras recibidas dentro de la red neural. Cada neurona
efectúa una suma de los valores que llegan a sus entradas. A
Dichas entradas, se le han asignado previamente un peso, que no
hace sino detectar las zonas de la señal sobre las cuales ha tenido
un efecto más notable e inhibirlas, así como a las muestras sobre
las cuales el canal no ha tenido un efecto importante, las premia.
De esta forma, nuestra red neural se va a oponer al ruido y la
interferencia intersimbólica.
El programa principal comienza en el fichero main.m. Éste
Muestra por pantalla información sobre el estado de la ejecución.
Utilizar otras funciones para operar con las señales. Para evitar un
fichero main masivo menos comprensible, se ha distribuido en
varios ficheros .m. Éstos no se definen como función: son parte
del código de main. Forman parte del mismo ámbito de validez de
variables (a diferencia de las funciones). Los ficheros definidos
son:
Si se supera un cierto umbral en la neurona, dicha neurona pondrá
a su salida un ‘1’. Dicha salida, se dirige hacia la segunda capa de
la red neural, que solo dispone de una única neurona y contribuirá
de esta forma a que en la salida total de la red haya un ‘1’ para el
periodo de bit actual. Al contrario sucedería si en la salida de la
neurona inicial hubiese un ‘0’.
Por simplicidad no implementamos la autodetección de tasa
binaria. Tampoco consideramos otras modulaciones digitales en
las que se transmiten varios bits en cada símbolo. Queda como
posible ampliación introducir en la segunda capa una neurona por
cada símbolo de la constelación. Bastaría con elegir de todas las
salidas de la capa dos la de mayor amplitud. En estas condiciones,
también sería posible redefinir el entrenamiento para poder
autodetectar la constelación.
5.Descripción del programa
El programa ha sido diseñado en Matlab. Se escogió este
programa por su versatilidad a la hora de realizar operaciones
matemáticas. El código se ha realizado de forma secuencial, para
simplificar la implementación. modelo de ejecución es un script
principal llamando a funciones.
−
−
−
−
−
−
La funcionalidad de la aplicación es la siguiente:
−
−
−
Inicialización de las variables que definen la red neuronal.
Creación de mensajes para el entrenamiento de la red.
Modulación y transmisión de los mensajes: simulación del
canal.
− Entrenamiento de la red.
− Creación de un mensaje transmisión de prueba.
− Modulación y transmisión del mensaje: simulación del canal.
Adicionalmente, puede mostrar estadísticas o gráficas
El programa está distribuido en varios ficheros .m, ejecutables
todos desde la línea de comandos de MatLab. Éstos constan de los
siguientes apartados:
−
Si es función, en la primera línea se incluye su definición.
Documentación: incluye fecha y versión, descripción de su
funcionalidad e información sobre cómo se utiliza. Se puede
consultar desde el intérprete de MatLab escribiendo “help
nombre_del_fichero”.
Inicialización. Se definen aquí las constantes utilizadas.
main.m: Inicia la ejecución. Para ejecutar el programa, basta
con escribir “main” en el intérprete de MatLab. En su
apartado de configuración se puede hacer que el programa
muestre o no gráficas con las señales.
inicializacionRedNeuronal.m: Inicializa la red de neuronas
definiendo las variables pertinentes. En su apartado de
configuración se puede definir, entre otras cosas, el número
de neuronas de la primera capa, sin que ello implique
modificar nada del resto del código.
entrenamientoRedNeuronal.m: Entrena los pesos de la red de
neuronas con el mensaje de entrenamiento y su
correspondiente señal, modulada y modificada en el canal.
Llama al siguiente fichero:
evaluarRedDeNeuronas.m: Habiendo introducido las
muestras de la señal en el vector que representa las entradas
de la red neuronal, escribe en la variable de salida el
resultado de evaluar neurona a neurona. Se utiliza tanto en el
entrenamiento como en el uso sucesivo de la red para
demodular mensajes.
demodular.m: Demodula la señal contenida en la variable
“transmision”, escribiendo el resultado (mensaje binario) en
la variable “mensajeDemodulado”. Para ello, evalúa en cada
periodo de bit la red neuronal con evaluarRedDeNeuronas.m.
estadisticas.m: Adicionalmente se pueden incluir aquí
cálculos sobre la probabilidad de error de bit, calculados a
partir del número de bit demodulados que difieren de los
modulados sobre el número de bits totales transmitidos. No
obstante, en la versión entregada se ha optado por otro medio
más intuitivo de evaluar la calidad de nuestro sistema: se
transmite un mensaje escrito, se convierte a binario, se
transmite y se recuperan los caracteres. Si el resultado es
legible, el sistema demodula correctamente.
Las funciones implementadas son las siguientes. Constan de
argumentos de entrada y variables de salida. Se adjunta más
información sobre ellas en la documentación de la propia
aplicación:
−
−
−
Configuración. En diversos ficheros se permite cambiar la
funcionalidad sin reescribir partes del código. Basta con
modificar los flag's de configuración. En los comentarios de
éstos se explica lo que se consigue con los distintos valores
aceptados.
Código ejecutable: que implementa la funcionalidad.
−
generarMensajeCuadrado.m: genera una señal binaria de
longitud la especificada alternando ceros y unos. El primer
bit es cero. Se utiliza como secuencia de entrenamiento.
generarMensajePulso.m: genera una señal binaria de longitud
la especificada en donde todos los bits valen cero menos el
central, que vale uno. Se utiliza como secuencia de
entrenamiento. En la versión entregada no es necesaria para
entrenar.
−
−
−
−
generarMensajeEnBinario.m: genera una señal binaria a
partir de un mensaje de texto (array de caracteres). Se utiliza
para mostrar el funcionamiento de la red.
modular.m: Modula el mensaje binario devolviendo las
muestras de la señal a transmitir. En su apartado de
configuración se pueden definir los parámetros de la
modulación: frecuencia de portadora, amplitud, tipo de
modulación (información contenida en la amplit
ud o en
la frecuencia,...), etc.
transmitir.m: modela el canal de transmisión digital
equivalente. Esto es, el canal real muestreado. Permite
introducir a la señal transmitida ruido aditivo blanco, ISI
(interferencia inter-simbólica) y un retardo. En las opciones
de configuración se pueden definir los parámetros de todos
éstos efectos no deseados.
decodificarMensajeEnBinario.m: toma el array de caracteres
demodulado y devuelve el array de caracteres
correspondientes.
Ejecutamos el programa con la siguiente configuración:
DEBUG=1; (main.c)
MODULACION_EN_AMPLITUD=1; (modular.m)
ISI=1; (transmitir.m)
RUIDO_BLANCO=1; (transmitir.m)
RETARDO=100; (transmitir.m)
Con el resto de opciones con sus valores por defecto. Obtenemos
las siguientes gráficas:
Un ejemplo de ejecución es el siguiente. El programa muestra por
pantalla lo siguiente:
>> main
INTELIGENCIA EN REDES DE COMUNICACIONES.
Deteccion en canales gausianos mediante algoritmos
neuronales.
Version: 2.00.01_15/01/08 FINAL
- (01/06) Inicializamos la red de neuronas:
-> OK.
- (02/06) Generamos la secuencia de entrenamiento:
-> OK.
- (03/06) Entrenamos la red de neuronas:
-> Entrenando pesos de las referencias neuronales...
-> Entrenando pesos de las entradas de las capas 1 y 2.
-> OK.
- (04/06) Generamos una transmision de prueba:
-> OK.
- (05/06) Demodulacion/decodificacion con la red de neuronas:
-> OK.
- (06/06) Estadisticas:
-> Enviando el mensaje:
Si con fuego arrancase una sonrisa de tu ser, con cerillas y
gasolina el RED volvía a arder...
-> Se obtiene lo siguiente:
Si con fuego arrancase una sonrisa de tu ser, con cerillas y
gasolina el RED volvía a arder...
-> OK.
Figura 11. Señal transmitida (entrenamiento)
>>
Poniendo a '1' el flag DEBUG definido en el fichero main.m, la
aplicación muestra gráficamente:
–
–
–
–
Figura 10. Secuencia de entrenamiento
La secuencia de entrenamiento.
La señal de entrenamiento transmitida.
La señal de entrenamiento recibida (con los efectos de ISI,
ruido y retardo introducidos por el canal), que se introducirá
en la red neuronal.
La secuencia binaria decidida.
Figura 12. Señal obtenida del canal (entrenamiento)
Figura 13. Secuencia decidida (entrenamiento).
Figura 14. Secuencia de entrenamiento
Figura 15. Señal transmitida (entrenamiento)
En la figura 13 se puede observar como la red ha tardado 4
símbolos en converger a una salida aceptable. Esto no siempre es
así. Dado que el ruido generado es aleatorio no en todas las
iteraciones converge al mismo tiempo. Ejecutamos el programa
modulando en frecuencia:
MODULACION_EN_AMPLITUD=0; (modular.m)
Con el resto de opciones como en la ejecución anterior.
Obtenemos las siguientes gráficas:
Figura 16. Señal obtenida del canal (entrenamiento)
Figura 17. Secuencia decidida (entrenamiento).
El sistema converge en la undécima muestra. En la figura 16 se
pueden observar los efectos del canal sobre la señal: el ruido, que
la hace tener un contorno irregular, el retardo de 100 muestras y la
ISI. Para ésta serie de ejemplos, la ISI tenía coeficientes
constantes.
6.Referencias
Figura 17. Secuencia decidida (entrenamiento).
El sistema ha convergido otra vez en la cuarta muestra. No
obstante, ejecutando otra vez con idéntica configuración
obtenemos la siguiente secuencia decidida:
[1] [1] Wikipedia, la enciclopedia libre. Edición en castellano
[en línea]: ttp://es.wikipedia.org/wiki/C%C3%B3digo_Morse
[Consulta 10 enero 2008]
[2] [1] Wikipedia, la enciclopedia libre. Edición en castellano
[en línea]: http://es.wikipedia.org/wiki/Algoritmo_de_Viterbi
[Consulta 10 enero 2008]
[3] [1] Wikipedia, la enciclopedia libre. Edición en castellano
[en línea]: http://es.wikipedia.org/wiki/fsk
[Consulta 10 enero 2008]
[4] [1] Wikipedia, la enciclopedia libre. Edición en castellano
[en línea]: es.wikipedia.org/wiki/Red_neuronal_artificial
[Consulta 10 enero 2008]
[5] [1] Wikipedia, la enciclopedia libre. Edición en castellano
[en línea]: http://www.usp.edu.pe/~jc.gutierrez/IA_/MLP.pdf
[Consulta 10 enero 2008]
Descargar