GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (15)След. > >>   Поиск:  
 Автор Тема: Постановка ИИ - задачи: "Фонотрон"
ams1
Сообщений: 82
Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 4:46
Изменено: 16 фев 18 6:51
Настроение у меня сегодня хорошее, порадую публику, пожалуй, хорошо сформулированной, ясной и обозримой задачкой ИИ (как и обещал), про которую уже лет 30- 50 никто таки и не заикнулся, насколько я в курсе...

1. Название "Фонотрон" - это шутка, аналогия с другими перцептронами,... Фоно- означает звук
2. Постановка задачи не = решению её, или даже обязательству её решить и всем все рассказать
3. Отчасти её уже решали, как смогли, но почему- то криво. Если я ошибаюсь - охотно просвещусь, а будет нужно- и тему закрою...
4. Цель темы- именно оценить, насколько много тут думающих и технически образованных участников, способных на конструктивные мысли... если кому- то задачка понравится для личного подвига в ИИ - решайте, буду только рад (за вас и ИИ)
5. Чисто интеллектуальные задачи (для ИИ) - это те, которые не требуют "материальных затрат" (физического труда, борьбы, расходов....). Эта задача потребует расходов, хоть и не больших... Но, главное, неинтеллектуальных затрат не требуется ни в какой задаче ИИ, а посему сразу предупреждаю, что некоторых участников буду просто молча удалять из темы за брань и флуд, ну или перемещать куда подальше - во флуд, например... Если же вам есть чего написать умного- можете даже материться- я отредактирую благоговейно.

Постановка задачи о "Фонотроне":

1. Понятие "Сознание" имеет явное отношение к ЕИ
2. ИИ, будучи построенным, пусть и не на принципах/ методах ЕИ, как минимум должен понимать ЕИ и уметь с ним общаться (Тест Тюринга)
3. Одна из простейших "функций" (возможностей) ЕИ- распознавание речи собеседника
4. Эта задача решается уже давно, засекречена в ящиках, нам мало известно про их достижения. Скорее всего только распознавание самплов (записанных в память слов, словосочетаний) и научились делать
5. Но ведь кроме речи есть и другие звуки, которые не хуже умеет распознавать ЕИ, а животные - нет!

6. Речь о музыке.
7. При помощи БПФ + ... научились отображать спектр муз трека на компе, очевидно. А дальше?!
8. ЕИ отлично распознает мелодию, муз инструменты (скрипка, барабан), ритмы (1/2, 3/4,...), такты ("муз слова", паузы), тональности, аккорды,... а что же БПФ - слабо даже ударный фронт начала трека отличить от удара аккордом в теле трека?! Только и научились спектр в реальном масштабе времени рисовать (оконное преобразование Фурье, а БПФ- быстрое преобразование Фурье)?

9. Задача о "Фонотроне" (сократим до ФТ):

Есть: скрипка и барабан (дуэт), пишем для них партию (ноты) на 10- 15 тактов, исполняем, записываем в память компа.

Требуется: выделить и "нарисовать" отдельно партии (спектры, мелодии) скрипки и барабана - так сказать, задача "инструментального анализа" трека...

Замечание 1:

Почти все в решении упирается в обработку сигналов и спектров. Никаких особых теорий и аппаратуры (инвестиций) не требуется. Надо всего- лишь пописать формулки (типа БПФ), и немного подумать. Просто и Ясно, никаких "мутных сущностей", "вычислений мышления" и "оптимизаций векторов"...

Т.е., когда решение будет построено, мы получим небольшую научную статью (формулы) об "инструментальном анализе" + простой алгоритм моделирующий одну из "функций" сознания ЕИ

Замечание 2:

Аргументы о невозможности (ввиду неоднозначности) такого анализа, типа 4=2+2=3+1=0+4=5-1=... - (сложение 2-х и более сигналов) элементарно убиваются доводом, что ЕИ это умеет делать "играючи"... - только- то, "Сознание" + "Опыт" требуются. Не требуется даже никакого "Мышления" ("невычислимого"- тьфу, гадость какая!), кроме алгоритма обработки, который мышлением можно назвать только с большой натяжкой, равносильной "мышлению" о голоде или сексе.

Замечание 3:

В этой теме приветствуются не обязательно только решения или готовые алгоритмы. Достаточно для начала просто идей, как это можно реализовать... Патентовать такие идеи я не хочу - время тратить, хоть, возможно, и иностранные бизнесмены и захотели бы это купить... Есть намного более интересные "ИИ- задачки", вытекающие из этой. Если, "вдруг", найдутся инвесторы - всех толковых участников обязуюсь (публично, здесь) привлечь к работам и предложить адекватные условия, вплоть до доли в бизнесе (пропорционально вкладу). Собственно решение мне представляется тривиальным с точностью до аппаратной и математической (компьютерной, алгоритмической) реализаций. Ценность её решения - в возможности продолжить его (в математическом смысле) на другие, много более важные / коммерчески значимые задачи ИИ.

Если кому такая задача покажется слишком сложной- упростим её до скрипки и флейты, или 2-х скрипок с разными партитурами...

Для слишком продвинутых участников- могу предложить сразу задуматься над сравнением тембров 2- скрипок- не в смысле спектральных отличий, а в смысле ЕИ- распознавания (различения) "Страдивари" от "Табуретто"...

Ниже привожу ссылки на полезные (и элементарные) статьи, чтобы всем не ползать в инете:

1. "https://ru.wikipedia.org/wiki/Преобразование_Фурье"
2. "https://ru.wikipedia.org/wiki/Дискретное_преобразование_Фурье"
3. "https://ru.wikipedia.org/wiki/Оконное_преобразование_Фурье"
4. "https://ru.wikipedia.org/wiki/S-преобразование"
5. "https://ru.wikipedia.org/wiki/Категория:Цифровая_обработка_сигналов"

Про "Цифровая обработка музыки" - ничего путного не нашел, кроме синтезаторов и редакторов...- соответствующие ссылки от профи- супер- велком!

А вот про коммерсантов, которые похожими вопросами давно и с выгодой для себя занимаются:

"Подобные анализаторы спектра называют анализаторами спектра реального времени. Основным их производителем является корпорация Keysight Technologies (США), Rohde & Schwarz[de] (Германия), Tektronix (США). Такие анализаторы появились в конце прошлого века и ныне бурно развиваются. "

Инструментарий для начинающих- тоже, оказывается, есть:

"Указанные методы спектрального анализа реализуются и в системах компьютерной математики, например, Mathcad, Mathematica, Maple и MATLAB."

Добавка от 17.02.18:

Цитата:

Автор: PavelZX

Специально не искал, наткнулся случайно, что-то вроде практического примера БПФ, интересно и комментарии почитать.
https://habrahabr.ru/post/247385/
- Makeman 6 января 2015 в 16:33 Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот.



Не хватает только мозгоффф (идей), как это решить, причем элементарными средствами!
[Ответ][Цитата]
гость
94.102.122.*
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 6:24
Фонотрон - Нечтокогнитрон - Синхрофазотрон
Ничего личного, просто ассоциация
[Ответ][Цитата]
гость
94.102.122.*
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 6:57
/*
Fast Fourier Transformation
====================================================
Coded by Miroslav Voinarovsky, 2002
This source is freeware.
*/

#ifndef FFT_H_
#define FFT_H_

struct Complex;
struct ShortComplex;

/*
Fast Fourier Transformation
x: x - array of items
N: N - number of items in array
complement: false - normal (direct) transformation, true - reverse transformation
*/
extern void universal_fft(ShortComplex *x, int N, bool complement);

struct ShortComplex
{
double re, im;
inline void operator=(const Complex &y);
};

struct Complex
{
long double re, im;
inline void operator= (const Complex &y);
inline void operator= (const ShortComplex &y);
};


inline void ShortComplex::operator=(const Complex &y) { re = (double)y.re; im = (double)y.im; }
inline void Complex::operator= (const Complex &y) { re = y.re; im = y.im; }
inline void Complex::operator= (const ShortComplex &y) { re = y.re; im = y.im; }

#endif


/*
Fast Fourier Transformation
====================================================
Coded by Miroslav Voinarovsky, 2006
This source is freeware.
*/

#include "fft.h"
#include <math.h>

// This array contains values from 0 to 255 with reverse bit order
static unsigned char reverse256[]= {
0x00, 0x80, 0x40, 0xC0, 0x20, 0xA0, 0x60, 0xE0,
0x10, 0x90, 0x50, 0xD0, 0x30, 0xB0, 0x70, 0xF0,
0x08, 0x88, 0x48, 0xC8, 0x28, 0xA8, 0x68, 0xE8,
0x18, 0x98, 0x58, 0xD8, 0x38, 0xB8, 0x78, 0xF8,
0x04, 0x84, 0x44, 0xC4, 0x24, 0xA4, 0x64, 0xE4,
0x14, 0x94, 0x54, 0xD4, 0x34, 0xB4, 0x74, 0xF4,
0x0C, 0x8C, 0x4C, 0xCC, 0x2C, 0xAC, 0x6C, 0xEC,
0x1C, 0x9C, 0x5C, 0xDC, 0x3C, 0xBC, 0x7C, 0xFC,
0x02, 0x82, 0x42, 0xC2, 0x22, 0xA2, 0x62, 0xE2,
0x12, 0x92, 0x52, 0xD2, 0x32, 0xB2, 0x72, 0xF2,
0x0A, 0x8A, 0x4A, 0xCA, 0x2A, 0xAA, 0x6A, 0xEA,
0x1A, 0x9A, 0x5A, 0xDA, 0x3A, 0xBA, 0x7A, 0xFA,
0x06, 0x86, 0x46, 0xC6, 0x26, 0xA6, 0x66, 0xE6,
0x16, 0x96, 0x56, 0xD6, 0x36, 0xB6, 0x76, 0xF6,
0x0E, 0x8E, 0x4E, 0xCE, 0x2E, 0xAE, 0x6E, 0xEE,
0x1E, 0x9E, 0x5E, 0xDE, 0x3E, 0xBE, 0x7E, 0xFE,
0x01, 0x81, 0x41, 0xC1, 0x21, 0xA1, 0x61, 0xE1,
0x11, 0x91, 0x51, 0xD1, 0x31, 0xB1, 0x71, 0xF1,
0x09, 0x89, 0x49, 0xC9, 0x29, 0xA9, 0x69, 0xE9,
0x19, 0x99, 0x59, 0xD9, 0x39, 0xB9, 0x79, 0xF9,
0x05, 0x85, 0x45, 0xC5, 0x25, 0xA5, 0x65, 0xE5,
0x15, 0x95, 0x55, 0xD5, 0x35, 0xB5, 0x75, 0xF5,
0x0D, 0x8D, 0x4D, 0xCD, 0x2D, 0xAD, 0x6D, 0xED,
0x1D, 0x9D, 0x5D, 0xDD, 0x3D, 0xBD, 0x7D, 0xFD,
0x03, 0x83, 0x43, 0xC3, 0x23, 0xA3, 0x63, 0xE3,
0x13, 0x93, 0x53, 0xD3, 0x33, 0xB3, 0x73, 0xF3,
0x0B, 0x8B, 0x4B, 0xCB, 0x2B, 0xAB, 0x6B, 0xEB,
0x1B, 0x9B, 0x5B, 0xDB, 0x3B, 0xBB, 0x7B, 0xFB,
0x07, 0x87, 0x47, 0xC7, 0x27, 0xA7, 0x67, 0xE7,
0x17, 0x97, 0x57, 0xD7, 0x37, 0xB7, 0x77, 0xF7,
0x0F, 0x8F, 0x4F, 0xCF, 0x2F, 0xAF, 0x6F, 0xEF,
0x1F, 0x9F, 0x5F, 0xDF, 0x3F, 0xBF, 0x7F, 0xFF,
};

//This is minimized version of type 'complex'. All operations is inline
static long double temp;
inline void operator+=(ShortComplex &x, const Complex &y) { x.re += (double)y.re; x.im += (double)y.im; }
inline void operator-=(ShortComplex &x, const Complex &y) { x.re -= (double)y.re; x.im -= (double)y.im; }
inline void operator*=(Complex &x, const Complex &y) { temp = x.re; x.re = temp * y.re - x.im * y.im; x.im = temp * y.im + x.im * y.re; }
inline void operator*=(Complex &x, const ShortComplex &y) { temp = x.re; x.re = temp * y.re - x.im * y.im; x.im = temp * y.im + x.im * y.re; }
inline void operator/=(ShortComplex &x, double div) { x.re /= div; x.im /= div; }
inline void operator/=(Complex &x, double div) { x.re /= div; x.im /= div; }
inline void operator*=(ShortComplex&x, const ShortComplex &y) { double temp = x.re; x.re = temp * y.re - x.im * y.im; x.im = temp * y.im + x.im * y.re; }


//This is array exp(-2*pi*j/2^n) for n= 1,...,32
//exp(-2*pi*j/2^n) = Complex( cos(2*pi/2^n), -sin(2*pi/2^n) )
static Complex W2n[32]={
{-1.00000000000000000000000000000000, 0.00000000000000000000000000000000}, // W2 calculator (copy/paste) : po, ps
{ 0.00000000000000000000000000000000, -1.00000000000000000000000000000000}, // W4: p/2=o, p/2=s
{ 0.70710678118654752440084436210485, -0.70710678118654752440084436210485}, // W8: p/4=o, p/4=s
{ 0.92387953251128675612818318939679, -0.38268343236508977172845998403040}, // p/8=o, p/8=s
{ 0.98078528040323044912618223613424, -0.19509032201612826784828486847702}, // p/16=
{ 0.99518472667219688624483695310948, -9.80171403295606019941955638886e-2}, // p/32=
{ 0.99879545620517239271477160475910, -4.90676743274180142549549769426e-2}, // p/64=
{ 0.99969881869620422011576564966617, -2.45412285229122880317345294592e-2}, // p/128=
{ 0.99992470183914454092164649119638, -1.22715382857199260794082619510e-2}, // p/256=
{ 0.99998117528260114265699043772857, -6.13588464915447535964023459037e-3}, // p/(2y9)=
{ 0.99999529380957617151158012570012, -3.06795676296597627014536549091e-3}, // p/(2y10)=
{ 0.99999882345170190992902571017153, -1.53398018628476561230369715026e-3}, // p/(2y11)=
{ 0.99999970586288221916022821773877, -7.66990318742704526938568357948e-4}, // p/(2y12)=
{ 0.99999992646571785114473148070739, -3.83495187571395589072461681181e-4}, // p/(2y13)=
{ 0.99999998161642929380834691540291, -1.91747597310703307439909561989e-4}, // p/(2y14)=
{ 0.99999999540410731289097193313961, -9.58737990959773458705172109764e-5}, // p/(2y15)=
{ 0.99999999885102682756267330779455, -4.79368996030668845490039904946e-5}, // p/(2y16)=
{ 0.99999999971275670684941397221864, -2.39684498084182187291865771650e-5}, // p/(2y17)=
{ 0.99999999992818917670977509588385, -1.19842249050697064215215615969e-5}, // p/(2y18)=
{ 0.99999999998204729417728262414778, -5.99211245264242784287971180889e-6}, // p/(2y19)=
{ 0.99999999999551182354431058417300, -2.99605622633466075045481280835e-6}, // p/(2y20)=
{ 0.99999999999887795588607701655175, -1.49802811316901122885427884615e-6}, // p/(2y21)=
{ 0.99999999999971948897151921479472, -7.49014056584715721130498566730e-7}, // p/(2y22)=
{ 0.99999999999992987224287980123973, -3.74507028292384123903169179084e-7}, // p/(2y23)=
{ 0.99999999999998246806071995015625, -1.87253514146195344868824576593e-7}, // p/(2y24)=
{ 0.99999999999999561701517998752946, -9.36267570730980827990672866808e-8}, // p/(2y25)=
{ 0.99999999999999890425379499688176, -4.68133785365490926951155181385e-8}, // p/(2y26)=
{ 0.99999999999999972606344874922040, -2.34066892682745527595054934190e-8}, // p/(2y27)=
{ 0.99999999999999993151586218730510, -1.17033446341372771812462135032e-8}, // p/(2y28)=
{ 0.99999999999999998287896554682627, -5.85167231706863869080979010083e-9}, // p/(2y29)=
{ 0.99999999999999999571974138670657, -2.92583615853431935792823046906e-9}, // p/(2y30)=
{ 0.99999999999999999892993534667664, -1.46291807926715968052953216186e-9}, // p/(2y31)=
};

#define M_PI (3.1415926535897932384626433832795)

inline void complex_mul(ShortComplex *z, const ShortComplex *z1, const Complex *z2)
{
z->re = (double)(z1->re * z2->re - z1->im * z2->im);
z->im = (double)(z1->re * z2->im + z1->im * z2->re);
}

static ShortComplex *createWstore(unsigned int Nmax)
{
unsigned int N, Skew, Skew2;
ShortComplex *Wstore, *Warray, *WstoreEnd;
Complex WN, *pWN;

Skew2 = Nmax >> 1;
Wstore = new ShortComplex[Skew2];
WstoreEnd = Wstore + Skew2;
Wstore[0].re = 1.0;
Wstore[0].im = 0.0;

for(N = 4, pWN = W2n + 1, Skew = Skew2 >> 1; N <= Nmax; N += N, pWN++, Skew2 = Skew, Skew >>= 1)
{
//WN = W(1, N) = exp(-2*pi*j/N)
WN= *pWN;
for(Warray = Wstore; Warray < WstoreEnd; Warray += Skew2)
complex_mul(Warray + Skew, Warray, &WN);
}
return Wstore;
}

static void fft_step(ShortComplex *x, unsigned int T, bool complement, const ShortComplex *Wstore)
{
unsigned int Nmax, I, J, N, Nd2, k, m, Skew, mpNd2, Step;
unsigned char *Ic = (unsigned char*) &I;
unsigned char *Jc = (unsigned char*) &J;
ShortComplex S;
const ShortComplex *Warray;
Complex Temp;

Nmax = 1 << T;

//first interchanging
for(I = 1; I < Nmax - 1; I++)
{
Jc[0] = reverse256[Ic[3]];
Jc[1] = reverse256[Ic[2]];
Jc[2] = reverse256[Ic[1]];
Jc[3] = reverse256[Ic[0]];
J >>= (32 - T);
if (I < J)
{
S = x[I];
x[I] = x[J];
x[J] = S;
}
}

//main loop
for(N = 2, Nd2 = 1, Skew = Nmax >> 1, Step= 1; N <= Nmax; Nd2 = N, N += N, Skew >>= 1, Step++)
{
for(Warray = Wstore, k = 0; k < Nd2; k++, Warray += Skew)
{
for(m = k; m < Nmax; m += N)
{
Temp = *Warray;
if (complement)
Temp.im= -Temp.im;
mpNd2= m + Nd2;
Temp *= x[mpNd2];
x[mpNd2] = x[m];
x[mpNd2] -= Temp;
x[m] += Temp;
}
}
}
}


/*
x: x - array of items
N: N - number of items in array
complement: false - normal (direct) transformation, true - reverse transformation
*/
void universal_fft(ShortComplex *x, int N, bool complement)
{
ShortComplex *x_;
ShortComplex *w;
ShortComplex *Wstore;

int T;
T= (int)floor(log((double)N) / log(2.0) + 0.5);
if (1 << T == N)
{
Wstore= createWstore(N);
fft_step(x, T, complement, Wstore);
delete [] Wstore;
return;
}
//find N', T
int N2= N+N;
int N_;
long double arg;
for(N_= 1, T= 0; N_ < N2; N_+= N_, T++)
{
}
//find --2pi/N/2 = pi/N
long double piN= M_PI / N;
if (complement)
piN= -piN;
//find x_[n] = x[n]*e^--2*j*pi*n*n/N/2 = x[n]*e^j*piN*n*n
x_= new ShortComplex[N_];
Complex v;
int n;
for(n= 0; n < N; ++n)
{
arg= piN*n*n;
v.re= cosl(arg);
v.im= sinl(arg);
complex_mul(x_ + n, x + n, &v);
}
for(; n < N_; ++n)
x_[n].re= x_[n].im= 0;

//find w[n] = e^-j*2*pi*(2*N-2-n)^2/N/2= e^-j*piN*(2*N-2-n)^2
w= new ShortComplex[N_];
int N22= 2*N - 2;
for(n= 0; n < N_; ++n, --N22)
{
arg= -piN*N22*N22;
w[n].re= (double)cos(arg);
w[n].im= (double)sin(arg);
}
//FFT1
Wstore= createWstore(N_);
fft_step(x_, T, false, Wstore);
//FFT2
fft_step(w, T, false, Wstore);
//svertka
for(n= 0; n < N_; ++n)
x_[n]*= w[n];
//FFT3 (complement)
fft_step(x_, T, true, Wstore);
//find X[n] = X_[n]*e^--j*2*pi*n*n/N/2 = X_[n]*e^j*piN*n*n
for(n= 0, N22= 2*N - 2; n < N; ++n, --N22)
{
arg= piN*n*n;
v.re= cosl(arg);
v.im= sinl(arg);
v/= N_;
if (complement)
v/= N;
complex_mul(x + n, x_ + N22, &v);
}
delete [] x_;
delete [] w;
delete [] Wstore;
}

Оптимизированный вариант fft_step:

static void fft_step(ShortComplex *x, unsigned int T, bool complement, const ShortComplex *Wstore)
{
unsigned int Nmax, I, J, N, Nd2, N2, k, Skew, Step;
unsigned char *Ic= (unsigned char*) &I;
unsigned char *Jc= (unsigned char*) &J;
ShortComplex S;

Nmax= 1 << T;

double cmul= complement ? -1.0 : +1.0;

//first interchanging
for(I = 1; I < Nmax - 1; I++)
{
Jc[0]= reverse256[Ic[3]];
Jc[1]= reverse256[Ic[2]];
Jc[2]= reverse256[Ic[1]];
Jc[3]= reverse256[Ic[0]];
J >>= (32 - T);
if (I < J)
{
S= x[I];
x[I]= x[J];
x[J]= S;
}
}

double *Warray;
double Wre, Wim;
double Tre, Tim;
double *arr= (double*)x;
double *arrEnd= arr + (Nmax + Nmax);

//main loop
for(N= 2, Skew= Nmax, Step= 1; N <= Nmax; N += N, Skew >>= 1, Step++)
{
N2= N + N;
Nd2= (N >> 1);
for(Warray= (double*)Wstore, k= 0; k < Nd2; k++, Warray += Skew)
{
Wre= *Warray;
Wim= cmul*Warray[1];
for(double *x1re= arr + (k + k); x1re < arrEnd; x1re+= N2)
{
double *x1im= x1re + 1;
double *x2re= x1re + N;
double *x2im= x2re + 1;
Tre = Wre * *x2re - Wim * *x2im;
Tim = Wre * *x2im + Wim * *x2re;
*x2re= *x1re - Tre;
*x2im= *x1im - Tim;
*x1re+= Tre;
*x1im+= Tim;
}
}
}
}
[Ответ][Цитата]
dr2chek
Сообщений: 871
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 8:59
Цитата:
Автор: ams1

Настроение у меня сегодня хорошее

Не хватает только мозгоффф (идей), как это решить, причем элементарными средствами!

Ты сюда зашел, чтобы пожаловаться на отсутствие у тебя мозгофф?
[Ответ][Цитата]
ams1
Сообщений: 82
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 9:20
Изменено: 13 фев 18 9:32
Цитата:
Автор: dr2chek

Ты сюда зашел, чтобы пожаловаться на отсутствие у тебя мозгофф?
- а это единственное на что твой ЕИ способен?
[Ответ][Цитата]
ams1
Сообщений: 82
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 9:36
Изменено: 13 фев 18 9:40
Цитата:
Автор: гость

Фонотрон - Нечтокогнитрон - Синхрофазотрон
Ничего личного, просто ассоциация
- да я и сам ассоциировал- лохотрон, мудазвон, ...- да потом угомонился...- если я сам начну с такого, то потом чего ждать от участников...

За FFT- код спасибо, конечно, только что с ним далее делать? Скрипку с барабаном в аренду брать, вместе с музыкантами?

Я бы предпочел сначала поболтать по сути задачи... Вот, например, я не ошибаюсь, что так её сформулировать ещё никто не собрался? Или, как часто у меня случается, меня давно уже опередили ("украли идею" - )
[Ответ][Цитата]
гость
94.102.122.*
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 11:00
Цитата:
Автор: ams1
За FFT- код спасибо, конечно, только что с ним далее делать? Скрипку с барабаном в аренду брать, вместе с музыкантами?

Форматирование поехало, но если надо, вышлю "красивый"

Цитата:
Автор: ams1
Я бы предпочел сначала поболтать по сути задачи... Вот, например, я не ошибаюсь, что так её сформулировать ещё никто не собрался? Или, как часто у меня случается, меня давно уже опередили ("украли идею" - )

Сейчас сверточными нейросетями много че делается. И всякими там LSTM.
Типовой вариант - использование скользящего окна. Иначе говоря, развертку
во времени переводят в пространство входов нейронов. С каким-то размером кадра.

Вроде бы получается неплохо. Но если немного отвелечься и подумать:
а что такое "вес" в живой нейросети и как там обрабатываются
пространственно-временные последовательности?
[Ответ][Цитата]
Михайло
Сообщений: 2366
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 12:25
Изменено: 13 фев 18 12:26
Цитата:
Автор: ams1

Есть: скрипка и барабан (дуэт), пишем для них партию (ноты) на 10- 15 тактов, исполняем, записываем в память компа.

Требуется: выделить и "нарисовать" отдельно партии (спектры, мелодии) скрипки и барабана - так сказать, задача "инструментального анализа" трека...

Забыл написать:
Есть: Множество примеров [решения подобных задач].

Иначе задача не считается интеллектуальной. Чему обучаться-то?
[Ответ][Цитата]
гость
197.231.221.*
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 13:29
Изменено: 13 фев 18 13:57, автор изменений: ams1
Цитата:
Автор: пи-и-и...- цензура амс
Забыл написать:
Есть: Множество примеров [решения подобных задач].

Иначе задача не считается интеллектуальной. Чему обучаться-то?
на вашем месте я бы помалкивал, вы достаточно сказали уже чтобы опозорить себя
[Ответ][Цитата]
ams1
Сообщений: 82
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 13:42
Изменено: 13 фев 18 13:55
Цитата:
Автор: Михайло

Забыл написать:
Есть: Множество примеров [решения подобных задач]...
- приведите примеры, хотя бы 3 (если есть "множество")
- и, я про обучение ничего не писал, речь идет о моделировании "функции ЕИ- Сознания", а именно, распознавания инструментов и т.д.
- если для НС обучение обязательно, кто ж вам запретит: ваше решение (задачи), вам и обучение придумывать...
[Ответ][Цитата]
ams1
Сообщений: 82
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 13:51
Цитата:
Автор: гость

Форматирование поехало, но если надо, вышлю "красивый"
- не, спасибо, когда понадобится ещё...- переформатируем...

Цитата:
Сейчас сверточными нейросетями много че делается. И всякими там LSTM.
Типовой вариант - использование скользящего окна. Иначе говоря, развертку
во времени переводят в пространство входов нейронов. С каким-то размером кадра.
- вот бы ссылки почитать на обработку музыки...

Цитата:
Вроде бы получается неплохо. Но если немного отвелечься и подумать:
а что такое "вес" в живой нейросети и как там обрабатываются пространственно-временные последовательности?

- про "вес в живой НС" я бы и ответил, как только решение этой задачи будет сформулировано на уровне понимания и логики... Увы, к НС- методам я всегда относился скептически применительно к задачам ИИ, и именно потому, что на вопросы подобные вашему ответов в рамках НС- идеологии не найти, имхо... Готов переубедиться, было бы с чего...
[Ответ][Цитата]
ams1
Сообщений: 82
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 14:03
Изменено: 13 фев 18 14:04
Добавлю, пожалуй, чуток инфы для размышлений:

Замечание 4:

По хорошему нам никто не мешает записать отдельно партии скрипки и барабана, а уж только потом их смешивать для прослушивания (как это и делается в студиях звукозаписи)... Т.е. у нас гарантированно будет "правильный ответ" - идеальный искомый результат распознавания для сравнения точности... с разными практическими (честными) методами.

Увы, записать процесс распознавания в голове ЕИ - нам пока никак. Остается только моделировать его...
[Ответ][Цитата]
PavelZX
Сообщений: 755
На: Постановка ИИ - задачи: "Фонотрон"
+1
Добавлено: 13 фев 18 19:32
Изменено: 13 фев 18 19:49
Анализ спектра это просто часть задачи. Соответственно, что при анализе речи (любой, независимо от языка), что при анализе любых других звуков, важен не сам спектр, а его развертка во времени. На самом деле задача усложняется, динамическим диапазоном, который сужается звуковым трактом, несовершенством микрофонов, шумами, искажениями, посторонними звуками.

В общем плане не вижу принципиального различия, что в распознавании звука, что изображения, но в последнем случае требуется обработка большего количества информации, за единицу времени. Подробно эту задачу не рассматриваю пока, но в общем плане применительно к СИМ, принцип вижу в программировании паттернов и распознавании их посредством нейронной сети, с соответствующим её обучением.

Для обработки звука важна предварительная фильтрация промышленных и других фиксированных источников шумов, в то же время при фильтрации надо быть осторожным и не потерять полезный сигнал. Важна правильная регулировка усиления сигнала, чтоб не потерять точного представления о динамике. Впрочем всё это важно и для видеотракта, просто качество звуковой картинки более заметно из-за меньшей информативности звука, как такового.

Другое дело, как реализовать распознавание на основе различных паттернов, с одной стороны, а с другой добиться того, чтоб система могла сама создавать новые паттерны, исходя из анализа новой информации. Тут принципы общие для всей СИМ, тем более, что многие Образы легче распознаются на основе сумму информации с разных сенсоров и нахождения разных паттернов.
[Ответ][Цитата]
Михайло
Сообщений: 2366
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 19:35
Изменено: 13 фев 18 19:41
Цитата:
Автор: ams1

- приведите примеры, хотя бы 3 (если есть "множество")
- и, я про обучение ничего не писал, речь идет о моделировании "функции ЕИ- Сознания", а именно, распознавания инструментов и т.д.
- если для НС обучение обязательно, кто ж вам запретит: ваше решение (задачи), вам и обучение придумывать...

1. Примеры партитур и их минусовок трудно насобирать?

2. Постановка этой задачи без обучения сводится к самостоятельному изучению акустики и её решению собственными силами. Решив эту задачу, вы изучите акустику, а основы искусственного интеллекта останутся за пределами понимания.
Если же вы хотите переложить решение на машину, то вы должны запрограммировать её как-то. Вот тут начинается затык: есть два способа программирования - программирование 1.0 и программирование 2.0. Первое - это когда ты изучаешь акустику и пишешь программу, реализующую идею. Второе - это когда ты подбираешь (как любит говорит А. Егоров) "аппроксимирующую функцию" и результат получается сам. У второго метода есть недостаток - для его реализации нужна некоторая критическая кучка грёбаных примеров.
Но в любом случае интеллектуальная задача не решается спонталыку, как думает Траян. Типа Карл Гаусс посидел и вдруг кричит "Эврика! Придумал!". Для того, чтобы решить серьёзную задачу, нужно аккумулировать нужные знания. Либо это сделает программист, либо машина сама.
[Ответ][Цитата]
rrr3
Сообщений: 11857
На: Постановка ИИ - задачи: "Фонотрон"
Добавлено: 13 фев 18 22:53
Изменено: 13 фев 18 23:02
Цитата:
Автор: ams1
...ответов в рамках НС- идеологии не найти, имхо... Готов переубедиться, было бы с чего...

Да хотя бы с любой "естественной" НС. (Хотя нет, у Вас с любой не получится, возьмите для начала уровня человека ).
Видимо к НСам Вы относите лишь то, что сейчас называют ИНСами, которые к НСам почти не имеют никакого отношения, кроме слов в названии... Но ИНСы могут быть разными и совсем не похожими на современные искусственные "НСы"...
[Ответ][Цитата]
 Стр.1 (15): [1]  2  3  4  5  ...  15След. > >>