
Muchos afiliados conocen a
Dmitry shwars Soshnikov (Microsoft) por sus informes relacionados con el aprendizaje automático. Y ahora los mundos de ML y .NET se están uniendo gracias a la tecnología ML.NET, por lo que un nuevo informe sería muy útil, y solo estará en DotNext (incluso dos,
de Dmitry y
Jeff Proseiz ).
Pero las actividades de Dmitry no se limitan a los informes; por ejemplo, también populariza las tecnologías de desarrollo entre los principiantes, incluida su propia hija. Y este no es un tema menos interesante: seguramente entre la audiencia de Habr hay padres que piensan cómo presentar a los niños a TI de manera más correcta.
Por lo tanto, en anticipación de
DotNext, entrevistamos donde comenzamos con una biografía de Dmitry, luego hablamos en detalle sobre la educación de TI de los niños, y al final tocamos el aprendizaje automático y los nuevos informes al respecto.
Biografia
- Eres conocido como el evangelista tecnológico de Microsoft, pero quiero conocer la biografía con más detalle: ¿qué pasó con Microsoft, cómo ingresaste a la empresa, qué estás haciendo exactamente ahora?- Probablemente me estaba desarrollando hace unos 30 años. Desarrollé un ejemplo para mi disertación en Java, pero cuando Microsoft presentó la plataforma .NET, me gustó. Y dirigí el desarrollo en .NET de un cierto análogo de SharePoint para una empresa estadounidense, y al mismo tiempo enseñé en el instituto. Me gusta compartir mi experiencia.
En algún momento, el Instituto de Aviación de Moscú comenzó a colaborar con Microsoft en varios programas para estudiantes. Los estudiantes comenzaron a participar en competiciones internacionales, una vez que tomaron el segundo lugar en el mundo. Y luego me dijeron desde Microsoft: "Aquí estás trabajando con estudiantes aquí, pero ¿quieres trabajar con estudiantes con nosotros?" Y pensé que era una buena oferta, porque podía combinar en un lugar lo que me gusta hacer: tanto la popularización de la tecnología como la tecnología misma.
Pero no dejó de enseñar. Por supuesto, se volvió menos involucrado en el desarrollo, pero la posición del evangelista en Microsoft sigue siendo principalmente técnica, implica un conocimiento constante de las tecnologías y una cierta cantidad de programación.
Estuve feliz de hacer esto durante unos diez años: al principio trabajé principalmente con el público estudiantil, luego con desarrolladores y nuevas empresas, viajé por toda Rusia con hackatones varias veces y los hice en grandes universidades. En general, fue interesante.
Y en los últimos dos años, me he dedicado al aprendizaje automático e inteligencia artificial de Microsoft, desarrollando proyectos piloto para grandes empresas internacionales. La tarea de Microsoft se está transformando un poco: solíamos esforzarnos por que las personas aumentaran su productividad a través de la tecnología, y ahora, además de las personas, ayudamos a las empresas a pensar en cómo implementar tecnologías modernas.
La compañía no siempre comprende cómo tomar e implementar inteligencia artificial: qué datos recolectar, cómo hacerlo. Estas son las cosas que ayudamos a hacer en proyectos piloto.
Fue un trabajo muy interesante, porque, por un lado, hicimos algunas cosas de semiinvestigación, leímos artículos científicos, miramos, ¿podemos hacerlo mejor de lo que está escrito allí, y muchos colegas con diferentes antecedentes, del Reino Unido, Noruega, algunos prácticamente del entorno académico
Ahora estoy volviendo al evangelismo, ahora se llama defensor del desarrollador de la nube.
- Antes de preguntar acerca de la capacitación de otros, quiero saber: ¿cómo te metiste inicialmente en TI y quién te enseñó?- Sorprendentemente, prácticamente nadie me enseñó inicialmente. Resultó que cuando aún era muy joven, intenté diseñar radios, realmente quería armar la mía. Pero esto fue antes del sexto grado, no sabía física y no funcionó por alguna razón, tomé algunas instrucciones obsoletas.
Y una vez que papá dijo: "Mira, el futuro está en la electrónica digital, no analógica", y dio "El arte de la ingeniería de circuitos" de Horowitz y Hill. Este es un libro de texto para estudiantes. Traté de resolverlo, al final me gustó leer sobre este tema, comenzaron a comprar libros sobre programación, pero no había computadoras en ese momento.
Y en algún momento logré quitarle una computadora a mis amigos por un tiempo, y comencé a usarla ... Luego fue un programa de entrenamiento básico, recuerdo, yo mismo intenté resolverlo en la escuela. No había maestros entonces, esto fue antes de los 90, 1985. Aprendí a programarme: BASIC, PASCAL, Assembler, C. Luego tuve que construir una computadora para mí, por supuesto, mi padre me ayudó con los componentes y con el ensamblaje y la configuración iniciales.
La primera vez que se lanzó, por supuesto, no fue fácil. Pero estoy orgulloso de estar en algún lugar del 7 ° al 8 ° grado, cuando el microcircuito se insertó incorrectamente en la computadora, salió humo de allí, y tuve que reparar esta computadora, y había cables carbonizados en el tablero en 5-6 lugares. No fue fácil de encontrar, comenzamos paso a paso, los ejecutamos sobre la marcha, vimos cómo el procesador lee las instrucciones de la memoria. Fue muy útil, entonces una persona aún podía entender cómo está organizada la computadora, ahora es casi imposible. Fue un buen momento, solo nostalgia.
Introduciendo a los niños a TI
- Se sabe que populariza la tecnología incluso entre los escolares, pero ¿cómo se ve esto en la práctica? Por ejemplo, entre otras cosas, usted es el "departamento líder de tecnología informática en el campamento infantil UNIO-R", ¿qué es?- En la práctica, todo es simple. Tengo una hija que ahora tiene 15 años y realmente quiero presentarle el mundo de las computadoras, porque creo sinceramente que en el futuro muchas profesiones estarán en el cruce con él. Y no importa lo que una persona quiera hacer, será mucho más fácil para él si posee tecnología informática.
Dmitry con su hija VikaMi hija va a la escuela de arte, le gusta dibujar, y estoy tratando de encontrar algo bueno en algún lugar del cruce, como el arte generativo por computadora. Crezco con ella y me involucro en varias actividades interesantes. De lo último que hicimos en Microsoft, hubo un evento abierto dedicado al Día de la Mujer en TI, donde todos fueron invitados. Y grabaron lecciones en línea sobre aprendizaje automático e IA para niños de 7 a 8 años, para que entiendan en qué tipo de mundo estamos empezando a vivir.
Además, estas lecciones fueron bastante prácticas. Existe una herramienta de Azure Machine Learning Studio que le permite aprender modelos de aprendizaje automático sin habilidades de programación. Y como ejemplos en este curso, tomamos fotos de una popular cuenta de Instagram, y utilizando servicios cognitivos sacamos letreros: por ejemplo, qué color prevalece, cuántas personas, qué tan felices son, cuál es su edad promedio, palabras clave, en la calle o en en el interior se tomó la foto.
Y trataron de encontrar la dependencia del número de Me gusta en estos signos. Después de haber entrenado un modelo de regresión simple, puede ver de inmediato qué factor afecta la cantidad de me gusta.
Me parece que incluso si los niños no pueden repetir tal experimento por sí mismos, les ayuda a comprender cómo funciona el mundo moderno. Para poder hacer algo de manera óptima, primero debe recopilar datos, luego medir y luego construir un modelo y aprender a predecir.
Bueno, los resultados en sí mismos también son interesantes. No los recuerdo por completo, pero, por ejemplo, las fotos en la calle resultaron tener más Me gusta que en interiores. Es interesante sacar tales conclusiones. Bueno, la herramienta en sí es muy simple.
Paralelamente a esto, existe UNIO-R: este es un campamento para niños organizado por mi amigo Yuri Gorvits, prácticamente para niños de conocidos. La información se transmite de boca en boca, y una compañía bien establecida de niños viaja allí, cada año llega alguien nuevo. La idea del campamento es para adultos interesados en compartir algo bueno con los niños. Los niños pasan la primera parte del día en el mar y la segunda mitad trabajando en proyectos dirigidos por adultos.
Hay varios proyectos: hacen películas, publican revistas, coleccionan robots. Hicimos varios objetos de arte interesantes con electrónica, con Arduino. Basado en los "gráficos de tortugas", hice un pequeño curso de C # para niños cuando pintaron. Hizo algo interesante basado en la programación en Minecraft.
Y, por cierto, un video muy bueno, sin embargo, en otro campamento, en Dilijan en Armenia, hicimos un proyecto cuando enseñé a los niños los conceptos básicos de programación en Minecraft, y programamos la construcción de una ciudad gigante. Está claro que no es difícil programar la casa, y construimos una ciudad de rascacielos, larga y hermosa.
Estoy muy interesado en cómo cautivar a los niños con este tipo de cosas y qué es responsable de ello. Atrae y transporta mucho a muchos niños, estoy buscando algunas cosas interesantes y difíciles.
- En su opinión, ¿cómo exactamente y a qué edad vale la pena comenzar una introducción a TI?- Me parece que es bueno dejarse guiar por el principio del libro "Después de las tres es demasiado tarde", pero no por el principio que se pone en su nombre, sino por otro. Hay un pensamiento importante: no es necesario forzar a los niños e insistir en algo, deben estar en el lugar correcto. Si está construyendo una computadora, déjelos allí y podrá hablar sobre este tema. Si está haciendo algo interesante, asegúrese de contarles a los niños al respecto e intente involucrarlos. Pero no fuerces a hacer algo por la fuerza. No siempre es así para mí, pero es importante.
En cuanto a la edad, hay algunos estudios que muestran que los niños menores de 10 años no entienden bien los lenguajes de texto artificial. Es decir, hasta 10-12 años, no necesitan aprender C # o el mismo Python. Para esta edad, hay lenguajes gráficos como Scratch, que funciona bien con siete años.
Microsoft tiene un gran producto, Microsoft Code: también es un lenguaje de bloque en el que puede programar simultáneamente desde bloques y puede cambiar a un lenguaje similar a JavaScript. En algún momento, cuando una persona se ve limitada en la programación de bloques, podrá cambiar y comprender fácilmente cómo se ven los mismos bloques en un lenguaje de texto.
Minecraft Education se puede programar en Microsoft Code, pero hasta ahora no se ha extendido mucho en Rusia. Y en su Código, puede programar un pequeño Microbit de placa de dispositivo.
En un momento en Inglaterra hubo un proyecto para distribuir dichos tableros a los escolares para la programación de la enseñanza. Hay 25 LED (5x5) en el tablero, sensores de temperatura y aceleración, todo en una botella. Es muy simple de programar, se conecta como una unidad flash USB, se descarga un archivo con el programa.
Y puedes hacer cosas increíbles con los "micro bits". Tienen radio bluetooth, para que puedan comunicarse entre sí. Hay proyectos absolutamente increíbles. Por lo que recuerdo, este es un proyecto en el que se simula el proceso de infección. Por ejemplo, estamos escribiendo un programa que, con cierta probabilidad, se infecta de un tablero cercano. Es interesante cómo esta infección se propaga en un grupo de niños: todos tienen un pago y observamos quién se enferma y quién no. Resulta que media lección de biología, mitad informática.
La educación moderna está tratando en gran medida de adoptar tales cosas interdisciplinarias. Para los profesores extranjeros, esto está más desarrollado, lo leí en Twitter. Por ejemplo, Minecraft para la educación. Pero aún puede intentar enseñarle algo a su hijo y mirar hacia proyectos multidisciplinarios.
- Sobre el Scratch mencionado, a veces se puede escuchar "bueno, es tan diferente de los idiomas" reales "que realmente no preparará a los niños para ninguna realidad". ¿Y qué dice su práctica: los niños cambian exitosamente de idiomas de bloque a texto?- Aquí tengo menos práctica, pero me parece que la transición no debería ser muy dolorosa. Los conceptos básicos son los mismos: bucle, variables, etc. En mi opinión, habiendo adquirido los conceptos, ponerlos en otro idioma no debería ser catastróficamente difícil.
Por otro lado, esto debe abordarse sin fanatismo. No es necesario pensar que si al principio no le enseñaste al niño Scratch, y a la edad de 10 o 12 años no comenzó a aprender Python, entonces llegará tarde a alguna parte. Tal vez no deberías apresurarte y prescindir de Scratch.
Además, no le enseñe idiomas industriales a un niño de 7 años. Él está acostumbrado a jugar juguetes, y aquí debes escribir todo tipo de "vacío principal".
- Acerca de "todo tipo de vacío principal" Kai Horstmann nos dijo que, para la conveniencia de enseñar a los principiantes, trató de deshacerse del "hola mundo" en Java, pero su propuesta no fue aceptada. ¿Tiene la sensación de que lenguajes como C # no son amigables para los principiantes y no se han vuelto más amigables en vano?- Creo que se pueden hacer más amigables en el entrenamiento. Por ejemplo, según la experiencia de mi curso de video "Programación emocionante de C #": no puedes deshacerte por completo de "void main", pero puedes decir "ignora todo, mira solo el lugar donde escribes algo".
Y luego resulta que la sintaxis del lenguaje en sí no es tan catastróficamente pesada. Por supuesto, en dichos idiomas la declaración for es complicada: en lugar de decir "repetir 10 veces", es más difícil escribir. Pero, en general, la experiencia de aprendizaje de C # no es más difícil que Python. En Python, intente explicarle a su hijo por qué escribir para i en el rango (10).
Por otro lado, existe una experiencia positiva de simplificar los idiomas. que es realizado por los creadores del entorno de programación Arduino y el entorno de programación de procesamiento. Arduino se basa en C ++, Procesamiento: parece estar basado en JavaScript o Java, pero admite Python. El procesamiento está hecho para diseñadores, Arduino está hecho para ingenieros electrónicos que no quieren entender la programación. Por lo tanto, todo se hizo allí, por lo que era necesario escribir menos, principalmente solo el código.
Estos entornos se están desarrollando con éxito y son muy populares. Por lo tanto, sí, de alguna manera puede simplificar los idiomas existentes para que se utilicen en el aprendizaje. En Python, debe incrustar un mínimo de simplificaciones, porque ya es bastante simple. Además, hay varias herramientas para ello, incluidos los Cuadernos de Júpiter y, por cierto, los
Cuadernos de Azure absolutamente maravillosos, disponibles desde la nube de forma gratuita, con soporte para el modo de presentación, bibliotecas, etc. Todo esto es muy conveniente de usar para el entrenamiento.
- Volviendo a las palabras "entonces una persona aún podría entender cómo está organizada la computadora". Una vez que era más fácil entender los sitios: un estudiante podía abrir su sitio favorito, mirar su código HTML y comenzar a hacer algo por sí mismo. Y en 2019, el umbral de entrada es mucho más alto, el estudiante maldecirá todo incluso en la etapa de configuración del entorno. ¿Es este un problema que impide la participación de las nuevas generaciones?- Me parece que el problema principal es que nuestras expectativas para lo que llamamos el sitio han aumentado. Si toma el sitio clásico en diseño académico en 1991, ahora la gente lo verá y se horrorizará.
El área temática en sí se está volviendo más complicada. Para crear sitios como Facebook, debes acostumbrarte. Al mismo tiempo, las bibliotecas, los marcos, los idiomas toman parte de la lucha con la complejidad. Hay entornos de programación que son relativamente simples y de alguna manera toman esta complejidad.
Y no es necesario pensar que la programación web es mucho más complicada que ninguna otra. Arduino tiene sus propias dificultades, allí debes poder conectar la electrónica. No tan conectado, todo arderá.
La principal dificultad en la programación web es que hay un frontend y un backend, y usted necesita comprender y entender cómo funciona. Pero es muy posible comenzar con uno simple. Al final, hacerse una página de inicio es una actividad bastante agradable y útil. Para comenzar con esto, y si una persona está interesada, se desarrollará y profundizará en esta dirección.
Desafortunadamente, el problema común es que ahora es difícil para una persona ser universal. Anteriormente, cualquier programador podía usar tanto el backend como el front-end, e incluso el ensamblador si era necesario, pero ahora es poco probable que las personas que trabajan en electrónica y puedan ensamblar programen en el estilo de la programación funcional reactiva. Solo porque es difícil de abrazar.
- Usted mencionó que ve muchos ejemplos extranjeros "interdisciplinarios", y en Rusia esto es menos. ¿Y cómo se relacionan las situaciones en general con la educación informática de los escolares en Rusia y en el extranjero?"Bueno, acabo de suscribirme a comunidades como Minecraft en Educación, y es por eso que veo muchos ejemplos interdisciplinarios extranjeros, por ejemplo, cuando un maestro de historia dice:" Me encargo de construir un campo de batalla histórico en Minecraft ". Me parece que no tenemos suficiente para que haya tanta libertad en la escuela. Por lo general, el profesor enseña su materia y en realidad no mira hacia otro lado.
En términos de educación en TI, tenemos muchas oportunidades. Hay campamentos infantiles muy fuertes para aquellos que quieren hacer TI, hay GoTo, una escuela de invierno en la facultad de física y tecnología. Deseando encontrar un lugar. Para los niños también existe: "League of Robots", "Kodabra", un montón de empresas privadas que cierran bien este nicho.
Y la escuela tampoco es tan mala: por ejemplo, la iniciativa internacional "La hora del código" (cuando se llama en las escuelas para pasar una hora y mostrar cómo funciona la programación) hace tres años fue apoyada por el Ministerio de Educación y el Ministerio de Comunicaciones. Y hubo cifras muy impresionantes para la cantidad de estudiantes que aprobaron la "Hora del Código" y trataron de hacer algo con sus propias manos. Esto está en Rusia en los millones de escolares.
Una persona que nunca ha oído hablar de programación, creo, de alguna manera fue abrazada y escuchó algo. Por lo tanto, me parece que no todo está mal. Pero, por supuesto, las estadísticas aún muestran que hay escasez de personas en TI: hay muchas, y muchos piensan que no es fácil y por qué complicar la vida.

AI
- Pasando del tema de los niños al tema de IA / aprendizaje automático, preguntamos sobre ambos. Entonces, una vez que papá te dijo "El futuro está en la electrónica digital" y resultó que tenía razón. Y si ahora estamos presentando a los niños a TI, también tenemos que pensar para qué es el futuro, porque para cuando lleguen a la industria, ya habrá llegado.
Pero el futuro para nosotros no es obvio. La IA se está desarrollando, pero ¿dónde estará dentro de 10 años? Algunas personas piensan que, en general, el código comenzará a escribir para nosotros. En una situación tan incomprensible, ¿de qué deberíamos hablar?- Me parece que definitivamente necesitamos hablar sobre inteligencia artificial. El problema con la IA no es que la computadora comience a escribir código inmediatamente para nosotros, sino que muchas tareas ahora se resuelven no escribiendo código, sino recolectando datos y entrenando ML. Y no hay a dónde ir: hay tareas para las cuales una persona escribe bien el código, y es razonable para ellas escribir código. Pero hay tareas para las que una persona no puede escribir código, y luego tienes que usar ML.
Y debido al hecho de que ML le permite resolver problemas cada vez más complejos, ocupa cada vez más espacio en el arsenal de especialistas en informática. , , -, , - . , , , .
, - . , : .
, . , , , , . - . - , — , , . , .
. , , . - , - , - , - .
. , , , , . , , , - . , , , , . JS- — .NET - , , .
- , - . , .
— — ?— — , . , . 15-20 , .
, , , . , , — , . Semantic Web Semantic Web, - .
, — « ». — , . .
, , , , , , . - .
— ML.NET , early adopters. , , ? ?— , , , , - . , , . , : ML.NET Python, - -. , , , , . , , Python , , . ML.NET — , DotNext.
, , - , ML.NET — , . « » , .
, . ML.NET 0.6, , . , , ML.NET , , .
— . .NET , Python, .
— — , ML.NET. DotNext , — ?— : , . , , ! , , , ML .NET : , . — .
, .NET. , — , , . - . ML.NET , , , .
, ML.NET , . — , , — , .

, , , , , , , . transfer learning, ML.NET . , — Custom Vision, Microsoft, .
, , , , ML.NET.
DotNext ML.NET ( ) 6-7 . . , , «F# Coding Dojo on Machine Learning» — F#, ML.NET.