А если согласны, то где в голосовании вариант "переводить в соответствии с устоявшейся русской терминологией, если она есть"? Ах, для это при переводе узкопрофессиональной книжки же нужно привлекать специалиста, который эту устоявшуюся терминологию знает, а это выше наших сил? Ну тогда да, тогда не переводите ничего. :\
Вообще есть проблема, что у нас специалисты думают, что использование английского языка приближает нас к богу и конеченой истине. Недавно слушая лекцию по машинному обучению услышал у очень уважаемого специалиста очевидную ошибку. Подумал, что я мог ошибиться и полез проверять. Оказывается это очень популярная ошибка на английском языке, часто встречается и она даже в Википедии присутствует, а в русской википедии кто-то потрудился разобраться, описал ошибку, почему она ошибка и как правильно. Но что-то мне подсказывает, что большинство людей даже не задумается о том, чтобы англоязычные источники русскоязычными проверять.
Вопрос, а не пробовал доразметить? Например сделать модель первого поколения, потом прогнать её на учебном наборе данных или по принципу кроссвалидации и посмотреть уже глазами на примеры, которые ошибочно размечались моделью? Есть предположение, что при таком подходе как раз неправильно размеченные слова будут вызывать ошибки чаще всего и датасет можно будет доразметить малой кровью.
Я с полносвязаными слоями работаю, использую https://pypi.org/project/torch-sparse/ У него манипулирование индексами показалось менее проблематичным. Там кроме весов хранится ещё тензор с индексами x2 размером потому что две координаты, так что экономия по памяти начинается только после того, как прорядили хотя бы на 2/3 и по скорости исполнения та же ситуация, примерно раза в три медленнее при том же количестве весов. Для моих достаточно экспериментальных целей подходит. Если зарубаться за скорость инференса думаю можно и что-то более эффективное подыскать. Я почти уверен, что если подумать головой можно хранить один индекс, а не два и не требовать обязательно long int, учитывая реальные размеры матриц, а хранить оба индекса в одном лонге.
>> 30-40% ускорения при сохранении качества не реальной задаче - это хороший результат, и требует обычно серьезного дообучения.
30-40% процентов на инференсе это не просто бабло, а баблище, и я не знаю почему народ это не стало золотым стандартом постобработки сети перед инференсом.
На обычной моей карточке разреженные тензоры обрабатываются, грубо говоря x3 по сравнению с dense с таким же количеством весов. Так что как только вы напрунили больше чем две трети вы уже вы выигрыше.
А кроме того никто, почему-то, не говорит, что удалять можно не только веса, но и целиком нейроны или свёртки. Это делается вообще без накладных расходов. Прунинг явно сильно недооценён.
Я бы даже сказал, что пора распрощаться с мыслью, что нейросети - точная наука, и начать относиться к ней, как к естественной. Как биологи, разглядывающие под микроскопом своих подопечных дрозофил и изучающие даже всякие химические и генетические взаимосвязи, но признающие при этом, что их понимание бесконечно не полно.
Кроме того как минимум у некоторых обезьян свой язык есть, просто мы тупые и его пока не способны понять. На шимпанзе кажется проводили исследование когда записывали все вокализации долгое время, клиссифицировали разные звуки, это уже давно сделано, а потом сделали статистический анализ дуплетов и триплетов. Выяснилось, что некоторые комбинации из трёх разных криков они применяют сравнительно часто, а некоторые другие комбинации никогда. Там чётко видно, что имеется какая-то синтаксическая структура.
Когда мы её поймём будет клёво. Пока довольствуемся, тем, что она есть.
>> врождёнными знаковыми системами для общения с сородичами Пчелиный танец не является полностью врождённым. В мире существует два разных пчелиных диалекта, отличающихся чуть не в 10 раз тем, какое расстояние кодируется одной восьмёркой, и диалекту пчела обучается в улье. Проводились соответствующие эксперименты.
Учёные не сразу до этого допетрили, а когда допетрили, то стали оставлять метку, которая социально значима для идентификации особи её сородичами, и вот только после этого тесты начали успешно проходить муравьи одного из видов.
Прямое преобразование в данном случае, это гуглить "МГД генератор". Если значимая часть энергии реакции идёт в заряженных частицах, то можно использовать МГД. Но такие реакции гораздо сложнее получить. Те реакции, которые проще всего по условиям на большую часть энергии гадят нейтронами которых трудно поймать, легко потерять и невозможно потом от реактора отмыть.
Ещё бы эта тарелка шевелиться могла вообще было бы прекрасно. В SETI важная проблема в том, что сейчас, в оснвоном, осматривают всё небо, глядя на каждую звезду совсем не долго, в то время как логические соображения подсказывают, что надо смотреть на небольшое количество наиболее интересных звёзд, но почти неприрывно. Армия радиолюбителей чьи тарелки в большой количестве пишут небо с многократным перекрытием каждой точки, чтобы исключить локальные помехи, могла бы тут помочь.
Североамериканские индейцы то же самое говорили про европейскую государственность, кстати. Конечно крайняя форма человекофермы неприемлема, но крайняя форма никогда и не реализуется. Развитие цивилизации это всего компромисс между выгодами от объединения и условиями на которых человеки согласны бунтовать против этого недостаточно сильно.
Первый учебник по математической лингвистике за пару тысяч лет до нашей эры. Нержавеющее железо, и много другого всякого интересного. Но перекос в гуманитарные науки у них да был, и сказался по полной.
Инки изобрели колесо, оно у них в игрушках случается. Но они жили в горах и на огромных расстояниях (Современные Чили и Перу), чтобы повозка смогла как-то конкурировать с вьючной ламой или вьючным человеком нужно было ещё изобрести хотя бы условно горизонтальную дорогу, тоннели в горах и арочные мосты и дороги в пару тысяч километров длинной.
Условия делали колёса не такими выгодными как в какой-нибудь египетской пустыне.
Скорее попытка Unity сделать Bolt, и гораздо более успешная сторонняя библиотека CanvasFlow являются аналогами блюпринтов. Я делал одну игру с активным использованием этой штуки и хочу сказать, что если вы чётко понимаете зачем она вам, это прям хорошо и удобно. Главное не пытаться сделать с её помощью вообще всё, и расширять её кастомными нодами и макросами.
Кто-то из инфантилов до сих пор не понял, что в Крокодиле и Незнайке на луне капитализм честно и объективно описывался как он есть? Ну погодите ещё немного, авось дойдёт.
Ну если шашечки, то можете подумать вот какую мысль: Если у вас batchnorm идёт до функции активации или если функция активация линейная во всех точках кроме 0 (relu, leakyrelu), то вы можете обучать батчнорм как обычно, а когда дело доходит до инференса умножить все веса составляющие логит на множитель из батчнорма и сделать биас как биас батчнорма. А батчнорм вообще выкинуть. Математически это будет строго тождественно батчнорму, но при этом у вас будет на одно матричное умножение меньше. :))
Вам шашечки или ехать? :) Ну и кроме того, в форвард пассе же вы не из формул возмёте числа, а уже сглаженные, обученные, так что все это влияет не только на обучение.
Тогда понятно откуда такое грубое пренебрежение временем, затрачиваемым на разработку, очевидно времени у вас завались, раз можете себе такой подход позволить. :\
Смотрите, вот у вас получается два числа: среднее и сигма, то есть сдвиг и 1/(множитель+e). Очевидно, что применять их непосредственно нельзя, потому что их слишком сильно будет колбасить при сколько-нибудь маленьком размере батча, например при батчах по два семпла их вообще будет носить из стороны в сторону.
Чтобы такой фигни не было к ним применяетс я экспоненциальное сглаживание, в торче с импульсом по умолчанию (1-1/10), а в тензорфлоу (1-1/100) После этого среднее и сигма оказываются средними уже не по конкретному батчу, а по большому куску учебной последовательности, в случае TF даже очень большому более ста батчей.
И вот теперь уже эти сглаженные множитель и сдвиг применяются. Собственно обучение параметров происходит не при обратном проходе, а при прямом. Отсюда сложность, нужно ручками в градиент записать такие числа, чтобы они отражали изменение, вычисленное при прямом проходе. Но поскольку вы пишете руками, то можете вместо того чтобы подгадывать числа, просто учить их при прямом проходе. Возникает неоднородность в коде, конечно.
А если согласны, то где в голосовании вариант "переводить в соответствии с устоявшейся русской терминологией, если она есть"? Ах, для это при переводе узкопрофессиональной книжки же нужно привлекать специалиста, который эту устоявшуюся терминологию знает, а это выше наших сил? Ну тогда да, тогда не переводите ничего. :\
Вообще есть проблема, что у нас специалисты думают, что использование английского языка приближает нас к богу и конеченой истине. Недавно слушая лекцию по машинному обучению услышал у очень уважаемого специалиста очевидную ошибку. Подумал, что я мог ошибиться и полез проверять. Оказывается это очень популярная ошибка на английском языке, часто встречается и она даже в Википедии присутствует, а в русской википедии кто-то потрудился разобраться, описал ошибку, почему она ошибка и как правильно. Но что-то мне подсказывает, что большинство людей даже не задумается о том, чтобы англоязычные источники русскоязычными проверять.
Как и штурвал, шкипер и швартовый, кстати.
Вопрос, а не пробовал доразметить? Например сделать модель первого поколения, потом прогнать её на учебном наборе данных или по принципу кроссвалидации и посмотреть уже глазами на примеры, которые ошибочно размечались моделью? Есть предположение, что при таком подходе как раз неправильно размеченные слова будут вызывать ошибки чаще всего и датасет можно будет доразметить малой кровью.
Я с полносвязаными слоями работаю, использую https://pypi.org/project/torch-sparse/ У него манипулирование индексами показалось менее проблематичным. Там кроме весов хранится ещё тензор с индексами x2 размером потому что две координаты, так что экономия по памяти начинается только после того, как прорядили хотя бы на 2/3 и по скорости исполнения та же ситуация, примерно раза в три медленнее при том же количестве весов. Для моих достаточно экспериментальных целей подходит. Если зарубаться за скорость инференса думаю можно и что-то более эффективное подыскать. Я почти уверен, что если подумать головой можно хранить один индекс, а не два и не требовать обязательно long int, учитывая реальные размеры матриц, а хранить оба индекса в одном лонге.
>> 30-40% ускорения при сохранении качества не реальной задаче - это хороший результат, и требует обычно серьезного дообучения.
30-40% процентов на инференсе это не просто бабло, а баблище, и я не знаю почему народ это не стало золотым стандартом постобработки сети перед инференсом.
На обычной моей карточке разреженные тензоры обрабатываются, грубо говоря x3 по сравнению с dense с таким же количеством весов. Так что как только вы напрунили больше чем две трети вы уже вы выигрыше.
А кроме того никто, почему-то, не говорит, что удалять можно не только веса, но и целиком нейроны или свёртки. Это делается вообще без накладных расходов. Прунинг явно сильно недооценён.
Я бы даже сказал, что пора распрощаться с мыслью, что нейросети - точная наука, и начать относиться к ней, как к естественной. Как биологи, разглядывающие под микроскопом своих подопечных дрозофил и изучающие даже всякие химические и генетические взаимосвязи, но признающие при этом, что их понимание бесконечно не полно.
Кроме того как минимум у некоторых обезьян свой язык есть, просто мы тупые и его пока не способны понять. На шимпанзе кажется проводили исследование когда записывали все вокализации долгое время, клиссифицировали разные звуки, это уже давно сделано, а потом сделали статистический анализ дуплетов и триплетов. Выяснилось, что некоторые комбинации из трёх разных криков они применяют сравнительно часто, а некоторые другие комбинации никогда. Там чётко видно, что имеется какая-то синтаксическая структура.
Когда мы её поймём будет клёво. Пока довольствуемся, тем, что она есть.
>> врождёнными знаковыми системами для общения с сородичами
Пчелиный танец не является полностью врождённым. В мире существует два разных пчелиных диалекта, отличающихся чуть не в 10 раз тем, какое расстояние кодируется одной восьмёркой, и диалекту пчела обучается в улье. Проводились соответствующие эксперименты.
Учёные не сразу до этого допетрили, а когда допетрили, то стали оставлять метку, которая социально значима для идентификации особи её сородичами, и вот только после этого тесты начали успешно проходить муравьи одного из видов.
Прямое преобразование в данном случае, это гуглить "МГД генератор". Если значимая часть энергии реакции идёт в заряженных частицах, то можно использовать МГД. Но такие реакции гораздо сложнее получить. Те реакции, которые проще всего по условиям на большую часть энергии гадят нейтронами которых трудно поймать, легко потерять и невозможно потом от реактора отмыть.
Ещё бы эта тарелка шевелиться могла вообще было бы прекрасно. В SETI важная проблема в том, что сейчас, в оснвоном, осматривают всё небо, глядя на каждую звезду совсем не долго, в то время как логические соображения подсказывают, что надо смотреть на небольшое количество наиболее интересных звёзд, но почти неприрывно. Армия радиолюбителей чьи тарелки в большой количестве пишут небо с многократным перекрытием каждой точки, чтобы исключить локальные помехи, могла бы тут помочь.
Североамериканские индейцы то же самое говорили про европейскую государственность, кстати. Конечно крайняя форма человекофермы неприемлема, но крайняя форма никогда и не реализуется. Развитие цивилизации это всего компромисс между выгодами от объединения и условиями на которых человеки согласны бунтовать против этого недостаточно сильно.
Первый учебник по математической лингвистике за пару тысяч лет до нашей эры. Нержавеющее железо, и много другого всякого интересного. Но перекос в гуманитарные науки у них да был, и сказался по полной.
Инки изобрели колесо, оно у них в игрушках случается. Но они жили в горах и на огромных расстояниях (Современные Чили и Перу), чтобы повозка смогла как-то конкурировать с вьючной ламой или вьючным человеком нужно было ещё изобрести хотя бы условно горизонтальную дорогу, тоннели в горах и арочные мосты и дороги в пару тысяч километров длинной.
Условия делали колёса не такими выгодными как в какой-нибудь египетской пустыне.
Скорее попытка Unity сделать Bolt, и гораздо более успешная сторонняя библиотека CanvasFlow являются аналогами блюпринтов. Я делал одну игру с активным использованием этой штуки и хочу сказать, что если вы чётко понимаете зачем она вам, это прям хорошо и удобно. Главное не пытаться сделать с её помощью вообще всё, и расширять её кастомными нодами и макросами.
Кто-то из инфантилов до сих пор не понял, что в Крокодиле и Незнайке на луне капитализм честно и объективно описывался как он есть? Ну погодите ещё немного, авось дойдёт.
Ну если шашечки, то можете подумать вот какую мысль: Если у вас batchnorm идёт до функции активации или если функция активация линейная во всех точках кроме 0 (relu, leakyrelu), то вы можете обучать батчнорм как обычно, а когда дело доходит до инференса умножить все веса составляющие логит на множитель из батчнорма и сделать биас как биас батчнорма. А батчнорм вообще выкинуть. Математически это будет строго тождественно батчнорму, но при этом у вас будет на одно матричное умножение меньше. :))
Вам шашечки или ехать? :)
Ну и кроме того, в форвард пассе же вы не из формул возмёте числа, а уже сглаженные, обученные, так что все это влияет не только на обучение.
Могли бы и по ссылке пройти, которую я вам прислал. Там английским по белому написано:
Тогда понятно откуда такое грубое пренебрежение временем, затрачиваемым на разработку, очевидно времени у вас завались, раз можете себе такой подход позволить. :\
Смотрите, вот у вас получается два числа: среднее и сигма, то есть сдвиг и 1/(множитель+e). Очевидно, что применять их непосредственно нельзя, потому что их слишком сильно будет колбасить при сколько-нибудь маленьком размере батча, например при батчах по два семпла их вообще будет носить из стороны в сторону.
Чтобы такой фигни не было к ним применяетс я экспоненциальное сглаживание, в торче с импульсом по умолчанию (1-1/10), а в тензорфлоу (1-1/100) После этого среднее и сигма оказываются средними уже не по конкретному батчу, а по большому куску учебной последовательности, в случае TF даже очень большому более ста батчей.
И вот теперь уже эти сглаженные множитель и сдвиг применяются. Собственно обучение параметров происходит не при обратном проходе, а при прямом. Отсюда сложность, нужно ручками в градиент записать такие числа, чтобы они отражали изменение, вычисленное при прямом проходе. Но поскольку вы пишете руками, то можете вместо того чтобы подгадывать числа, просто учить их при прямом проходе. Возникает неоднородность в коде, конечно.
Более подробно о роли дисперсии градиентов при обучении и сглаживании могу посоветовать мой собственный доклад на ODSFest: https://www.youtube.com/watch?v=Npm-awHtfeM