Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 2268

 
Rorschach:

недавно книгу выкладовал, там интересная идея была выставлять веса сети по классическому методу, а потом тонко донастраивать обучением. Интересно есть способы совмещать обучение с учителем и с подкреплением

это все навороченные аналоги МАшки

 
Maxim Dmitrievsky:

это все навороченные аналоги МАшки

У сеток преимущество в нелинейности и способе подбора параметров, а так те же фильтры.

Просто про обучение с подкреплением много негатива. В автомобилях сети с учителем показывают лучше результаты, в играх то же. Даже придумали сетку с конца уровня обучать и переставлять спавн все ближе к началу. Еще интересно, опыт датасайнтиста решает. Юнити сделали игру специально под МЛ и устроили чемп. Человек в среднем доходит до 20 уровня. Взяли 2 самых новых метода по сеткам, с их помощью в среднем доходили до 4 уровня. А спецы на чемпе смогли показать результаты на уровне человека.

 
Rorschach:

У сеток преимущество в нелинейности и способе подбора параметров, а так те же фильтры.

Просто про обучение с подкреплением много негатива. В автомобилях сети с учителем показывают лучше результаты, в играх то же. Даже придумали сетку с конца уровня обучать и переставлять спавн все ближе к началу. Еще интересно, опыт датасайнтиста решает. Юнити сделали игру специально под МЛ и устроили чемп. Человек в среднем доходит до 20 уровня. Взяли 2 самых новых метода по сеткам, с их помощью в среднем доходили до 4 уровня. А спецы на чемпе смогли показать результаты на уровне человека.

был хайп РЛ, уже прошел.. сейчас в тренде трансформеры и ГАНы

 
Maxim Dmitrievsky:

был хайп РЛ, уже прошел.. сейчас в тренде трансформеры и ГАНы

В тренде мозги! которые знают все алгоритмы и умеют применять конкретный алгоритм для конкретной задачи, а не за трендами гоняться....

если тебе надо в ГО выиграть то нах. тебе эти ганы  там? а если ирисы класифицыровать , то нах. там РЛ ?

всему свое место!

 
mytarmailS:

В тренде мозги! которые знают все алгоритмы и умеют применять конкретный алгоритм для конкретной задачи, а не за трендами гоняться....

если тебе надо в ГО выиграть то нах. тебе эти ганы  там? а если ирисы класифицыровать , то нах. там РЛ ?

всему свое место!

вот твой ограниченный кругозор и не может представить куда что и зачем

 
Maxim Dmitrievsky:

был хайп РЛ, уже прошел.. сейчас в тренде трансформеры и ГАНы

ганы интересно для генерации искусственных данных попробовать

по хорошему надо бы этот фреймвок освоить, тогда все пойдет намного быстрее.
 
Rorschach:

ганы интересно для генерации искусственных данных попробовать

по хорошему надо бы этот фреймвок освоить, тогда все пойдет намного быстрее.

Я свою ган написал, там ничего сложного. Правда не рекуррентная, надо будет переделать.

Пример на Торче

декларация

# creating cGAN
class Discriminator(nn.Module):
    def __init__(self, input_vector):
        super().__init__()
        self.model = nn.Sequential(
            nn.Linear(input_vector, 500),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(500, 250),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(250, 1),
            nn.Sigmoid()
        )

    def forward(self, x):
        return self.model(x)


class Generator(nn.Module):
    def __init__(self, input_vector):
        super().__init__()
        self.model = nn.Sequential(
            nn.Linear(input_vector, 250),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(250, 500),
            nn.ReLU(),
            nn.Dropout(0.2),
            nn.Linear(500, input_vector)
        )

    def forward(self, x):
        return self.model(x)

обучение

tens = torch.FloatTensor(pr[pr.columns[1:]].values)
train_iterator = torch.utils.data.DataLoader(
    tens, batch_size=BATCH_SIZE, shuffle=True,)

discriminator = Discriminator(INPUT_VECTOR+1)
generator = Generator(INPUT_VECTOR+1)
optimizer_discriminator = torch.optim.Adam(discriminator.parameters(), lr=lr)
optimizer_generator = torch.optim.Adam(generator.parameters(), lr=lr)

for epoch in range(NUM_EPOCHS):
    for n, real_samples in enumerate(train_iterator):
        if real_samples.shape[0] != BATCH_SIZE:
            continue
        # Data for training the discriminator
        real_samples_labels = torch.ones((BATCH_SIZE, 1))
        latent_space_samples = torch.randn((BATCH_SIZE, INPUT_VECTOR+1))
        generated_samples = generator(latent_space_samples)
        generated_samples_labels = torch.zeros((BATCH_SIZE, 1))
        all_samples = torch.cat((real_samples, generated_samples))
        all_samples_labels = torch.cat(
            (real_samples_labels, generated_samples_labels)
        )

        # Training the discriminator
        discriminator.zero_grad()
        output_discriminator = discriminator(all_samples)
        loss_discriminator = loss_function(
            output_discriminator, all_samples_labels)
        loss_discriminator.backward()
        optimizer_discriminator.step()

        # Data for training the generator
        latent_space_samples = torch.randn((BATCH_SIZE, INPUT_VECTOR+1))

        # Training the generator
        generator.zero_grad()
        generated_samples = generator(latent_space_samples)
        output_discriminator_generated = discriminator(generated_samples)
        loss_generator = loss_function(
            output_discriminator_generated, real_samples_labels
        )
        loss_generator.backward()
        optimizer_generator.step()

        # Show loss
        if epoch % 10 == 0 and n == BATCH_SIZE - 1:
            print(f"Epoch: {epoch} Loss D.: {loss_discriminator}")
            print(f"Epoch: {epoch} Loss G.: {loss_generator}")
вот есть другой пример
 
Если не хотите ничего писать, то готовое
The Synthetic Data Vault | Open Source tools for Synthetic Data Generation
  • sdv.dev
The Synthetic Data Vault (SDV) enables end users to easily generate synthetic data for different data modalities, including single table, relational and time series data. With this ecosystem, we are releasing several years of our work building, testing and evaluating algorithms and models geared towards synthetic data generation.
 
Maxim Dmitrievsky:

Я свою ган написал, там ничего сложного. Правда не рекуррентная, надо будет переделать.

Пример на Торче

вот есть другой пример

Будет время попробую разобраться.

 
Rorschach:

Будет время попробую разобраться.

Я провел сравнения разных генеративных моделей из библиотеки выше, через свою либу. Получилось, что GMM работает лучше для табличных данных (датафрейма с приращениями). Потом идут копулы, вторые по эффективности. Нейросетевые модели типа табличных Ганов и проч. сработали хуже. Но, возможно, я что-то сделал не так. Еще есть такой вариант. 

Причина обращения: