А как же мысленный эксперимент?) Это очень распространенный способ экспериментирования среди теоретиков. Тем более, что логические структуры можно моделировать прямо в голове. На данном этапе рассчитывать на что большее, увы, я не могу, в связи с определенными пробелами в картине.
Ну с математикой у меня все-таки не настолько туго. Но готовое новое решение я сгенерировать не смогу, во всяком случае не сейчас.
А вот то, что НС изучили, возможно. Но я читала много разнообразных книжек, где на них смотрели с новой стороны и/или применяли новый подход. Возможно, это направление и получит очередное развитие.
А на счет дерева — не вполне согласна. Оно все-таки также работает со статистическими данными. Я же предлагаю обозначить коридор и по универсальному алгоритму (или определенной функцией активации) сгенерировать новое решение.
Понятное дело, что в общем случае число вариантов бесконечно. Для того и вводятся ограничения по выбору, но эти самые ограничения не обязательно только пара X-Y, можно же оптом ограничить всё пространство ниже (и/или выше) представленной пары ограничений.
На примере бинарной матрицы. Допустим, у нас есть бинарная сеть с 2 входами и 2 выходами, значения соответствующие могут приниматься в соответствии с таблицей истинности. Мы говорим, что всё, что выше (1, 0) — неверно. Остается буквально один вариант (1, 1), который, теоретически, нам и нужен. Тут не затрагивается вопрос об алгоритме выбора или функции активации, конечно, но основную идею понять можно.
Ну как что угодно, что угодно было бы, если бы мы вообще ничего не сказали, а просто выдали бы лист бумаги. А тут задумывается нечто такое: пространство вариантов ограничивается, так что у НС меньше пространства для маневра и она заведомо не может выбрать те значения, которые находятся вне коридора «разрешенных» значений. Отмечу, что коридор этот может быть довольно сложной формы. Так вот, применяя определенную функцию активации (пока затрудняюсь сказать какую) или универсальный алгоритм (об этом в комментариях чуть выше), НС сама должна прийти к верному значению.
Как-то грубо вы выразились, «мусор». Я все-таки считаю, что правильней будет сказать именно «не правильное значение», то есть такое значение, которое не интересует нас в данный момент, скажем так. Так вот, на вход подаем неверное значение для данного случая, а на выход — соответствующее ему (но опять не неверное в данный момент) выходное. То есть эти две структуры не просто так не верны, а с каким-то определенным смыслом.
Увы, с математикой у меня всегда было туго, так что точно сказать, что, мол, «функция активации должна быть такая-то» и далее формула, я, к сожалению, не скажу. А вот методика обучения, как было сказано выше, такая же, как и у обычного нейрона — на примерах. Но, в отличие от этих самых обычных нейронов, примеры не «правильные», а «ошибочные». То бишь мы говорим НС не как надо делать, а, напротив, как делать не надо. Тем самым обозначая коридор возможных значений. Далее дело упирается в тот факт, каким образом НС должна дойти от X до Y (или, наоборот, от Y до X, так как соответствие при нужных ограничениях должно поддерживаться в обе стороны): либо определенной функцией активации (но в таком случае для каждого случая она должна быть своя), либо (что мне больше нравится) с помощью универсального алгоритма обработки сигналов. Про последнее я вычитала в одной интересной книжке, где проводилась параллель между строением коры головного мозга, где область мозга, отвечающая за, например, слух, могла быть «переучена» под зрение, и алгоритмом работы искусственных нейронов. Хотя, возможно, вместо функции активации можно использовать эдакий вариант аппроксимации функции по среднему значению в заданном коридоре… Тут вопрос остается открытым.
Вылезая из танка, хотелось бы отметить интересность данного решения. Я вообще далеко не поклонник Моторолы, даже совсем напротив, но форма квадрата крайне интересна.
В данном случае же это не монитор 22', так что разница вверх-вниз или вправо-влево несущественная, а вот соотношение экрана 4:3, на мой вкус, гораздо удачнее с точки зрения восприятия графики.
Да, действительно интересное устройство! Соотношение 4:3 особенно порадовало. И почему только другие производители мобильных устройств не догадались до такой простой, но гениальной мысли?
Интересная статья, хорошие часы.
Но вопрос… А радио-то работает? :) И вообще, оно в подобных моделях работает как у нас старые 3-х канальные приемники (то бишь от сети) или по каким-то другим соображениям?
Нас вот в универе обучали С++ на Visual Studio и с применением толстенной книги Дейтела и Дейтела. На мой вкус, такое сочетание хорошо идет для начинающих людей с головой.
Самые характерные задания: написать калькулятор.
Не, как я уже говорила, всё так, конечно. Собственно, я не противоречу вашей мысли, просто хочу дополнить, так сказать, пространство событий. Моя мысль заключается в том, что, во-первых, и в компиляторе присутствуют косяки, во-вторых… Как бы это лучше выразиться. Скажем так, компилятор реализуется не на основе хотя бы даже искусственных нейронных сетей… Иными словами, широта мышления отсутствует у него. Как вы правильно отметили, если программист очень хорошего уровня, то он уже знает во что будет компилироваться его код (при условии багов в компиляторе, конечно) и, грубо говоря, может прекрасно и сам написать соответствующий ассемблерный код. Другой вопрос, что благодаря тому, что он «знает», он может «не париться» на этот счет и автоматизировать процесс составления конечной программы. А вот если программист не очень хорошо шарит во всем этом деле, то и при наличии глюков не сможет толком разобраться в чем дело, ежели что-то пойдет не так.
В общем, что я хочу сказать. Увольте, я не призываю народ стереть тот же Visual Studio и писать программы в машинных кодах. Программирование высокого уровня (особенно под тот же Виндовс) чрезвычайно дельная штука. Я лишь говорю о том, что во всем могут быть недостатки (как в компиляторе, так и в программисте), а знать как и что происходит, когда человек пишет программу на языке высокого уровня будет более чем полезно. Особенно при написании больших/важных/сложных программ. А большое количество программистов пренебрегают этим полезным знанием.
Кстати да, обращаю внимание, что статья в общем ориентирована именно на начинающих людей в этом деле.
Конечно, всё так. Но в вашем комментарии упоминается лишь характеристика «качества» кода. Все-таки код, на мой взгляд, это не вино, так что кроме «качества», опять же на мой взгляд, ключевыми параметрами сравнения кода от программиста и от компилятора будут, как минимум, еще и «быстродействие», «вес». Код, с эстетической точки зрения, может быть безумно красив и понятен, но с других позиций будет уступать по каким-то иным (например, перечисленным мною выше) характеристикам. В свою очередь, программист может быть не столь утончен в «формулировках», но все-таки оптимизировать код под конкретную задачу. Тут я, конечно же, сужу с позиции ассемблирования под микроконтроллеры.
Стоит также отметить, что компилятор — это не дар богов, а плоды труда все тех же программистов. Тут возникает дилемма курицы и яйца. Собственно, мне кажется, что не стоит всегда перекладывать всю работу на компилятор, ибо это лишь рукотворный инструмент, который, безусловно, может быть большим подспорьем в программировании.
А вот то, что НС изучили, возможно. Но я читала много разнообразных книжек, где на них смотрели с новой стороны и/или применяли новый подход. Возможно, это направление и получит очередное развитие.
А на счет дерева — не вполне согласна. Оно все-таки также работает со статистическими данными. Я же предлагаю обозначить коридор и по универсальному алгоритму (или определенной функцией активации) сгенерировать новое решение.
На примере бинарной матрицы. Допустим, у нас есть бинарная сеть с 2 входами и 2 выходами, значения соответствующие могут приниматься в соответствии с таблицей истинности. Мы говорим, что всё, что выше (1, 0) — неверно. Остается буквально один вариант (1, 1), который, теоретически, нам и нужен. Тут не затрагивается вопрос об алгоритме выбора или функции активации, конечно, но основную идею понять можно.
Но вопрос… А радио-то работает? :) И вообще, оно в подобных моделях работает как у нас старые 3-х канальные приемники (то бишь от сети) или по каким-то другим соображениям?
А фото можно глянуть по ссылке в профайле.
Самые характерные задания: написать калькулятор.
В общем, что я хочу сказать. Увольте, я не призываю народ стереть тот же Visual Studio и писать программы в машинных кодах. Программирование высокого уровня (особенно под тот же Виндовс) чрезвычайно дельная штука. Я лишь говорю о том, что во всем могут быть недостатки (как в компиляторе, так и в программисте), а знать как и что происходит, когда человек пишет программу на языке высокого уровня будет более чем полезно. Особенно при написании больших/важных/сложных программ. А большое количество программистов пренебрегают этим полезным знанием.
Кстати да, обращаю внимание, что статья в общем ориентирована именно на начинающих людей в этом деле.
Стоит также отметить, что компилятор — это не дар богов, а плоды труда все тех же программистов. Тут возникает дилемма курицы и яйца. Собственно, мне кажется, что не стоит всегда перекладывать всю работу на компилятор, ибо это лишь рукотворный инструмент, который, безусловно, может быть большим подспорьем в программировании.