|
Последний раз редактировалось Mihaylo 23.05.2026, 13:19, всего редактировалось 1 раз.
Внимание. Речь сейчас пойдёт не про типы данных Python/Numpy/Pandas/Pytorch и не про представления тензоров в CPU/GPU.
Речь о параллельном мире, в котором данные на синапсах и на выходах нейросетей также обладают типами (ML-типами). Как известно, нейросети работают исключительно с вещественными числами, даже если это всегда 0.0 или 1.0. Но про типы данных никто никогда не говорил.
Так вот, я - говорю.)
Давайте я сразу накидаю базу: данные делятся на интерпретируемые и эмбеддинги (всё, что в скрытых слоях). Интерпретируемые данные - это то, что на входе и выходе нейросети.
Классификация ML-типов как в реальном мире: простые типы и сложные типы. У интерпретируемых данных можно выделить типы boolean, integer, real и т.д. - как в реальном мире. У эмбеддингов тип данных определяется нейроном в процессе обучения нейросети и не является интерпретируемым. Но можно выделить основные сложные типы: struct (list), const-size array, var-size array, dynamic-size array, unordered set. Возможно, следует туда добавить словари dict (key-query), которые в трансформерах используются. И ещё вопрос, надо ли выделить batch-packed types - это когда данные упакованы в батчи, особенно важно для var-size array.
Это всё база. А теперь про тип данных - unspecified (аналог реального типа данных variant). Когда веса нейрона только инициализированы случайным образом, его типы данных на входе синапсов становится unspecified. В процессе обучения синапсы специализируются и в дальнейшем попытка подать на вход данные другого типа приведут к ухудшению процесса. Это и есть типизация, когда вы вынуждены соблюдать ML-типы (даже если вы их не можете интерпретировать).
Когда у нейрона формируются определённые типы на синапсах, то можно говорить о том, что на его выходе тоже сформировался некоторый тип и нейроны из последующего слоя "привыкают" к этому типу данных. Вы не можете просто взять и переподключить какие-то связи в нейросети, не испортив процесс обучения. Но это было бы интересно!
В связи с вышесказанным, я бы заменил типизацию данных термином натурализация данных. Вы вынуждены учитывать природу данных, к которой привыкает каждый синапс нейрона. Некоторые думают, что нейронке можно скормить некоторые грязные данные. Это не так. Надеюсь в будущем, на курсах ML, будут рассказывать про натурализацию данных и вспоминать моё доброе имя.
|