Не обращайте внимания. У mpakep своё понимание слова «переобучение», которое отличается от общепринятого, а также своё представление о бинарных сетях, которые он долго и неудачно пытается пиарить на хабре и в ods.ai.
Многие случаи «странного» кода в этом проекте поясняются тем, что код пишется девелоперами оригинального Tensorflow, и многие методы буквально «переводятся» с Python.
Отсюда заполнения словарей через LINQ — автор кода явно пытался эмулироваться питоновские генераторы, хотя на C# это выглядит крайне неинтуитивно.
Отсюда же и проверка на is Tensor — в аналогичном методе в питоновской реализации return type неизвестен, потому что в коде Tensorflow нет статических тайп хинтов.
Пожалуй, в подобных проектах (где разработчикам приходится писать не на своём «естественном» языке программирования) статический анализ кода особенно важен, потому что помимо контроля качества кода он ещё и помогает разработчику выучить новую для него экосистему.
Автор — создатель фреймворка Keras и автор парочки топовых пейперов в области deep learning.
Говорить, что он «даже в минимальной степени не понимает фундаментальные отличия ML от general AI», как-то самоуверенно.
В оригинальной статье наилучшие результаты классификации на SST-2 получаются при a=0, когда модель учится только подражать, не учитывая реальные лейблы.
Странно, никогда не получалось обучить хорошо сетку с дистилляцией только на лейблах учителя. Обычно выходило хорошо, когда градиенты от учителя и от GT имеют примерно один порядок (куда ближе к a=0.5, как вышло у вас).
Правда я гонял дистилляцию на CNN и совсем других задачах, но сути это по идее менять не должно.
Скорее наоборот, связка tf+Keras позволяет быстро сделать решение и легко отправить в прод. PyTorch в этом плане пока что хуже. Это подтверждают и всяческие опросы, в которых PyTorch лидирует по статьям и каглу, но Keras+TF на порядок популярнее в плане разработки продакшен моделей.
Как препод в ВУЗе могу возразить — донести до других информацию, коей владеешь сам это наука само по себе ибо одно дело знать, а другое дело — рассказать
Это не противоречит сказанному выше. Это просто значит, что не каждый сеньор сможет быть преподавателем. Но факт остается фактом — для многих предметов в IT-вузах преподаватели должны иметь практический уровень по меньшей мере мидла в соответствующей дисциплине.
А в реальности всё намного хуже. Преподаватели не владеют не только прикладными предметами, но и теоретическими. В своем ВУЗе уже к третьему курсу я знал большую часть предметов лучше преподавателей, и я думаю, что примерно такая же ситуация происходит в большей части университетов.
Мне сложно сравнивать с ситуацией в РФ, потому что я не очень знаю, какие там зарплаты, но по украинским меркам платят очень много: честным трудом с нуля у нас столько ни в какой другой индустрии не заработать.
признание AI субъектом права — это инструмент устранения неопределенности, возникающей в связи с совершением AI действий, не прогнозируемых его создателем
Ещё раз: это феерический бред.
Если я бросаю из окна камень, и он неспрогнозированно попадает в голову прохожему, отвечаю за это я.
Если я реализовал quicksort, в котором выбор pivot делается случайно и зависит от random seed (я подозреваю, что вы не обладаете технической экспертизой в ML, но с классическими алгоритмами-то наверняка знакомы), я не могу точно спрогнозировать его результат, но за результат работы приложения, которое включает этот алгоритм, отвечаю я. И деньги, которые юзеры платят за использование моего приложения, буду получать я. И распоряжаться ими буду я по своему усмотрению.
Думаю, с этим всем вы согласны?
Наконец, мы приближаемся к черте, где у вас в голове что-то перемыкает, и вы начинаете повторять глупый баззворд «искусственный интеллект».
Итак, я строю логистическую регрессию, которая классифицирует какие-то данные для моих пользователей. И, разумеется, я не могу спрогнозировать заранее, каковы будут её предикты, потому что я не знаю, какие данные попадут ей на вход. И всё ещё это просто алгоритм, который я задизайнил для конкретной задачи.
И сеть, генерирующая картинки, ничем от этого не отличается. Это просто математическая модель распределения точек в довольно сложном и многомерном пространстве изображений.
При этом, указанное может быть применимо как в weak AI, так и к strong AI, а равно к weak AI (если, конечно, такое будет возможно), который в будущем станет Strong)
Господи, да прекратите вы уже говорить про strong AI.
Его не существует.
Он не появится в ближайшие годы.
Когда он появится, он скорее всего не будет тем, чем является современный ML.
Мы не можем предсказать, какой вид он будет иметь.
Поэтому все рассуждения о том, как его надо регулировать, в данный момент — это бессмысленные спекуляции и демагогия.
Ну, вряд ли уж прямо «абсолютно ничего не понимаем» :)
Без преувеличения складывается такое ощущение.
В вашем представлении есть искусственный интеллект, и отношение между weak AI и strong AI такое, будто weak AI — это какая-то незавершенная или менее совершенная форма strong AI.
В реальности же отношение таково, что weak AI — это алгоритмы, такие же, как, скажем, quicksort или binary search, только чуть сложнее, а strong AI — это выдумки писателей-фантастов.
И когда strong AI появится, он вряд ли будет просто модифицированной или эволюционировавшей версией текущих нейросетей.
Возникает ощущение, что мы с автором живем на разных планетах.
В том мире, где я живу, нейросети, которые радостно упоминает автор (как и куча других алгоритмов машинного обучения, про которые автор, возможно, не знает), являются алгоритмами weak AI и имеют чуть менее, чем никакое, отношение к описанному в статье «искусственному интеллекту».
К ним неприменимы «стадии взросления», они не могут быть субъектами авторского права (во всяком случае, не в большей мере, чем субъектами права могут быть любые программы), они не могут «зарабатывать деньги, которые будут использоваться для их развития», потому что они просто выполняют поставленную задачу.
То, о чем говорит автор — это strong AI. Strong AI в ближайшие несколько лет нам не светит, а когда он появится (вернее — если он появится), никто не знает, в каком виде это всё будет. Поэтому всё, описанное в статье — это далекое от реальности теоретизирование, вызванное, вероятно, тем, что автор статьи далёк от мира того, что сейчас называют AI.
Так что апеллирование к тому, что для «кодировщика» не успели добавить значение «архитектура нейросети», это лукавство.
Какое лукавство? Вы говорите посмотреть слово в словаре, но другой вариант в словаре тоже есть.
И они оба имеют в словаре не тот смысл, про который мы спорим.
Вы не привели ни одного, просто ни одного аргумента, показывающего, что писать «автоэнкодер» неправильно, ведь буквально все валидные аргументы применимы к обоим вариантам одинаково.
Учитывая, что в словарях есть слово «кодировщик», а «энкодер» отсутствует, да, этот транслит — не перевод — многими применяется не то что некорректно, а бездумно.
Если вы потрудитесь заглянуть в толковый словарь, а не в орфографический, то узнаете, что слово «кодировщик» означает вовсе не архитектуру нейросети, а слова «автокодировщик» там тоже нет.
Как и 90% терминов из deep learning.
А ещё вы, видимо, невнимательно читаете мои сообщения. Я вам в явном виде выше писал, что слово «энкодер» есть в русских словарях. Другое дело, что оно там тоже значит далеко не нейросетевую архитектуру.
И пока у «энкодера» не такой катастрофический перевес с точки зрения встречаемости в статьях, я предпочту использовать более «русское» «кодировщик».
Предпочитайте, это же абсолютно нормальный вариант. Только не навязывайте другим в комментариях свою не обоснованную позицию о том, что второй вариант некорректный.
Вы с поразительным упорством упёрлись не туда. Ещё раз: спор был не про кодер/энкодер с приставкой «эн». Спор был про энкодер/кодировщик с приставкой «авто». Ну или если совсем докапываться до терминов: речь шла об основе кодер/кодировщик, с совсем сопутствующими суффиксами и окончаниями. И приставкой «авто».
Вы с поразительным упорством спорите с буквальным утверждением, не понимая, что это просто аналогия, чтобы показать, что ваши «авто» и «кодировщик» — тоже иностранные корни, тот самый транслит, который вы так не уважаете.
Вы правда не понимаете, что «энкодер» — это не перевод, а транслит? И что переводом является именно «кодировщик»?
Мне кажется, это вы не понимаете, что если в русском языке присутствует заимствованное слово, то хоть оно и является транслитом с английского, оно в то же время является и переводом.
Вы же не считаете слово «код» транслитом от слова «code», правда? А ведь оно формально является.
А тут я присоединяюсь к автору поста: буду вместе с ним топить за правильный перевод, а не за ленивую или безграмотную транслитерацию сообщества.
Какое счастье, что «автоэнкодер» не является неправильным переводом.
Язык — динамическая штука. Его определяет в конечном итоге народ, который им пользуется. Ещё вчера не существовало феминитивов — сейчас они у многих в обиходе и в украинском, например, вошли в официальные правила языка с этого года.
Так же и в науке — терминология заимствуется из английского разными путями. И побеждает тот путь, который больше понравился сообществу.
Гхм, мы же не спорили, как лучше — кодер или энкодер, верно? Так при чём тут приставка в английском слове, если речь шла о корне в словах на русском?
You won't believe it!
В русском это тоже приставка «эн-». А корень что в «кодер», что в «кодировщик» общий — «код».
К счастью — или вашему неудовольствию — это пока что не общепринятый термин, и у слова encoder есть устоявшиеся переводы, добавлять ничего нового не требуется. Об этом я писал выше. Как и том, почему защищают транслит.
Мне кажется, вы слегка ошибаетесь.
Во-первых, у слова «encoder» есть два устоявшихся перевода: «кодировщик» и «энкодер». Пруф второго можете найти в той же статье на википедии, которую я упомянул выше.
Во-вторых, перевод «автоэнкодер» действительно не общепринятый, я был не прав с этой формулировкой. Тем не менее, по всем параметрам «автоэнкодер» более используемый, чем «автокодировщик»: по результатам в гугле (7к vs 4к), количеству статей на хабре (75 vs 43), поисковым запросам («автокодировщик» вообще отсутствует), упоминаниям в ODS (25 vs 148).
Так что, хотите вы этого или нет, в этом вопросе сообщество на стороне автоэнкодера.
Авто — это приставка. Кодировщик/энкодер — корень.
You won't believe it!
А спор начался из-за того, что более «русский» вариант не обязательно является правильным. С точки зрения механизмов добавления новых слов в язык оба варианта ок, и вариант «автоэнкодер» является общепринятым.
Как нормы русского языка могут определять, какой из вариантов приживется? Термины могут заимствоваться из другого языка, могут переводиться.
Автоэнкодер — это заимствование (транслитерация).
Автокодировщик — это перевод (причем частичный, ведь мы не говорим самокодировщик, не говоря уж о том, что код — корень иностранного происхождения сам по себе).
Отсюда заполнения словарей через LINQ — автор кода явно пытался эмулироваться питоновские генераторы, хотя на C# это выглядит крайне неинтуитивно.
Отсюда же и проверка на is Tensor — в аналогичном методе в питоновской реализации return type неизвестен, потому что в коде Tensorflow нет статических тайп хинтов.
Пожалуй, в подобных проектах (где разработчикам приходится писать не на своём «естественном» языке программирования) статический анализ кода особенно важен, потому что помимо контроля качества кода он ещё и помогает разработчику выучить новую для него экосистему.
Говорить, что он «даже в минимальной степени не понимает фундаментальные отличия ML от general AI», как-то самоуверенно.
Странно, никогда не получалось обучить хорошо сетку с дистилляцией только на лейблах учителя. Обычно выходило хорошо, когда градиенты от учителя и от GT имеют примерно один порядок (куда ближе к a=0.5, как вышло у вас).
Правда я гонял дистилляцию на CNN и совсем других задачах, но сути это по идее менять не должно.
Скорее наоборот, связка tf+Keras позволяет быстро сделать решение и легко отправить в прод. PyTorch в этом плане пока что хуже. Это подтверждают и всяческие опросы, в которых PyTorch лидирует по статьям и каглу, но Keras+TF на порядок популярнее в плане разработки продакшен моделей.
Это не противоречит сказанному выше. Это просто значит, что не каждый сеньор сможет быть преподавателем. Но факт остается фактом — для многих предметов в IT-вузах преподаватели должны иметь практический уровень по меньшей мере мидла в соответствующей дисциплине.
А в реальности всё намного хуже. Преподаватели не владеют не только прикладными предметами, но и теоретическими. В своем ВУЗе уже к третьему курсу я знал большую часть предметов лучше преподавателей, и я думаю, что примерно такая же ситуация происходит в большей части университетов.
Ещё раз: это феерический бред.
Если я бросаю из окна камень, и он неспрогнозированно попадает в голову прохожему, отвечаю за это я.
Если я реализовал quicksort, в котором выбор pivot делается случайно и зависит от random seed (я подозреваю, что вы не обладаете технической экспертизой в ML, но с классическими алгоритмами-то наверняка знакомы), я не могу точно спрогнозировать его результат, но за результат работы приложения, которое включает этот алгоритм, отвечаю я. И деньги, которые юзеры платят за использование моего приложения, буду получать я. И распоряжаться ими буду я по своему усмотрению.
Думаю, с этим всем вы согласны?
Наконец, мы приближаемся к черте, где у вас в голове что-то перемыкает, и вы начинаете повторять глупый баззворд «искусственный интеллект».
Итак, я строю логистическую регрессию, которая классифицирует какие-то данные для моих пользователей. И, разумеется, я не могу спрогнозировать заранее, каковы будут её предикты, потому что я не знаю, какие данные попадут ей на вход. И всё ещё это просто алгоритм, который я задизайнил для конкретной задачи.
И сеть, генерирующая картинки, ничем от этого не отличается. Это просто математическая модель распределения точек в довольно сложном и многомерном пространстве изображений.
Господи, да прекратите вы уже говорить про strong AI.
Поэтому все рассуждения о том, как его надо регулировать, в данный момент — это бессмысленные спекуляции и демагогия.
Без преувеличения складывается такое ощущение.
В вашем представлении есть искусственный интеллект, и отношение между weak AI и strong AI такое, будто weak AI — это какая-то незавершенная или менее совершенная форма strong AI.
В реальности же отношение таково, что weak AI — это алгоритмы, такие же, как, скажем, quicksort или binary search, только чуть сложнее, а strong AI — это выдумки писателей-фантастов.
И когда strong AI появится, он вряд ли будет просто модифицированной или эволюционировавшей версией текущих нейросетей.
В том мире, где я живу, нейросети, которые радостно упоминает автор (как и куча других алгоритмов машинного обучения, про которые автор, возможно, не знает), являются алгоритмами weak AI и имеют чуть менее, чем никакое, отношение к описанному в статье «искусственному интеллекту».
К ним неприменимы «стадии взросления», они не могут быть субъектами авторского права (во всяком случае, не в большей мере, чем субъектами права могут быть любые программы), они не могут «зарабатывать деньги, которые будут использоваться для их развития», потому что они просто выполняют поставленную задачу.
То, о чем говорит автор — это strong AI. Strong AI в ближайшие несколько лет нам не светит, а когда он появится (вернее — если он появится), никто не знает, в каком виде это всё будет. Поэтому всё, описанное в статье — это далекое от реальности теоретизирование, вызванное, вероятно, тем, что автор статьи далёк от мира того, что сейчас называют AI.
Какое лукавство? Вы говорите посмотреть слово в словаре, но другой вариант в словаре тоже есть.
И они оба имеют в словаре не тот смысл, про который мы спорим.
Вы не привели ни одного, просто ни одного аргумента, показывающего, что писать «автоэнкодер» неправильно, ведь буквально все валидные аргументы применимы к обоим вариантам одинаково.
Если вы потрудитесь заглянуть в толковый словарь, а не в орфографический, то узнаете, что слово «кодировщик» означает вовсе не архитектуру нейросети, а слова «автокодировщик» там тоже нет.
Как и 90% терминов из deep learning.
А ещё вы, видимо, невнимательно читаете мои сообщения. Я вам в явном виде выше писал, что слово «энкодер» есть в русских словарях. Другое дело, что оно там тоже значит далеко не нейросетевую архитектуру.
Предпочитайте, это же абсолютно нормальный вариант. Только не навязывайте другим в комментариях свою не обоснованную позицию о том, что второй вариант некорректный.
Вы с поразительным упорством спорите с буквальным утверждением, не понимая, что это просто аналогия, чтобы показать, что ваши «авто» и «кодировщик» — тоже иностранные корни, тот самый транслит, который вы так не уважаете.
Мне кажется, это вы не понимаете, что если в русском языке присутствует заимствованное слово, то хоть оно и является транслитом с английского, оно в то же время является и переводом.
Вы же не считаете слово «код» транслитом от слова «code», правда? А ведь оно формально является.
Какое счастье, что «автоэнкодер» не является неправильным переводом.
Язык — динамическая штука. Его определяет в конечном итоге народ, который им пользуется. Ещё вчера не существовало феминитивов — сейчас они у многих в обиходе и в украинском, например, вошли в официальные правила языка с этого года.
Так же и в науке — терминология заимствуется из английского разными путями. И побеждает тот путь, который больше понравился сообществу.
You won't believe it!
В русском это тоже приставка «эн-». А корень что в «кодер», что в «кодировщик» общий — «код».
Мне кажется, вы слегка ошибаетесь.
Во-первых, у слова «encoder» есть два устоявшихся перевода: «кодировщик» и «энкодер». Пруф второго можете найти в той же статье на википедии, которую я упомянул выше.
Во-вторых, перевод «автоэнкодер» действительно не общепринятый, я был не прав с этой формулировкой. Тем не менее, по всем параметрам «автоэнкодер» более используемый, чем «автокодировщик»: по результатам в гугле (7к vs 4к), количеству статей на хабре (75 vs 43), поисковым запросам («автокодировщик» вообще отсутствует), упоминаниям в ODS (25 vs 148).
Так что, хотите вы этого или нет, в этом вопросе сообщество на стороне автоэнкодера.
You won't believe it!
А спор начался из-за того, что более «русский» вариант не обязательно является правильным. С точки зрения механизмов добавления новых слов в язык оба варианта ок, и вариант «автоэнкодер» является общепринятым.
Автоэнкодер — это заимствование (транслитерация).
Автокодировщик — это перевод (причем частичный, ведь мы не говорим самокодировщик, не говоря уж о том, что код — корень иностранного происхождения сам по себе).
Оба варианта легитимные.