Ticarette makine öğrenimi: teori, pratik, ticaret ve daha fazlası - sayfa 3301

 
Andrey Dik #:

Evet, Sanych orada ekstremum olmadığını yazmıştı ve yanılıyordu, çünkü her fonksiyonun ekstremumu vardır.

Ekstremum, bir fonksiyonun belirli bir aralıkta veya belirli bir alanda en büyük (maksimum) veya en küçük (minimum) değere ulaştığı noktadır. Ekstremumlar, fonksiyon sadece bir noktanın bazı komşuluklarında ekstrem değere ulaştığında yerel olabilir veya fonksiyon verilen aralığın tamamında veya verilen bir alanda ekstrem değere ulaştığında global olabilir.

Siz onları bilinçli olarak aramasanız bile (kullandığınız algoritmalar bu arama işlemini sizin için yapar) uç değerler her zaman oradadır. Optimizasyon olmadan öğrenme imkansızdır ve doğru FF atamaları olmadan da optimizasyon imkansızdır. Ekstremumların aranması sizin için yapılıyorsa ve gizlenmişse (algoritmanın içine dikilmişse), bu onların var olmadığı anlamına gelmez (hem ekstremumlar hem de optimizasyon).

Orada bir işlev yok.

Lütfen, yeter, gişe bilgilerini geçelim. Optimizasyonun ne olduğunu biliyorum.
 
mytarmailS #:

Böyle mi?

ve gerçekten bir milyon koşulla başa çıkabilir mi?

Bu anahtar ve C++ işlerinde biraz kayboldum.

İlk iki fonksiyon R uygulamasıdır, sonuncusu ise C++'da switch't ir.

Unit: microseconds
                              expr    min     lq      mean median     uq       max neval
     rule(n = sample(1:200, 1), x) 40.482 44.473  57.18044 46.754 51.886  2688.931  1000
    rule2(n = sample(1:200, 1), x) 29.079 35.351 567.03671 38.202 43.904 86712.314  1000
 rule_cpp(n = sample(1:200, 1), x) 31.360 34.781  53.26793 36.491 40.482  4924.005  1000

Aslında hiç kazanç yok, bu nasıl olabilir?...
 
mytarmailS #:

Bu anahtar ve C++ olayında biraz kayboldum.

ilk iki fonksiyon R uygulamasıdır, sonuncusu ise C++'da switch' tir.

Aslında hiç kazanç yok, nasıl olabilir...?

Bana kodu gösterebilir misiniz?

Muhtemelen cevap zaten alınmışken bir fonksiyonu boşa harcıyorsunuz...

 
Aleksey Vyazmikin #:

Bana kodu gösterebilir misiniz?

Muhtemelen cevap zaten alınmışken fonksiyonu boşuna çalıştırıyorsunuz...

Kod benim gönderdiğimle aynı, sadece kuralları 5 yerine 300 yaptım.

Kodu göndermenin ne anlamı var?
Mimariye çoktan karar verdim
 
mytarmailS #:
Kod sizin gönderdiğinizle aynı, ancak kuralları 5 yerine 300 yaptım

R kodunu göndermenin ne anlamı var?
Mimariye çoktan karar verdim

Soru, fonksiyon çağrısının kodunda yer almaktadır.

 
Aleksey Vyazmikin #:

Soru fonksiyon çağrı kodunda.

Anlamıyorum.
 
mytarmailS #:

Aslında hiç kazanç yok, bu nasıl olabilir...

Olabilecek pek çok şey var. Kod ektedir, aşağıda fonksiyon kısmı yer almaktadır.

bool Rule0( const vector<double> &x ) { return(x[3] > x[4]); }
bool Rule1( const vector<double> &x ) { return(x[0] < x[4]); }
bool Rule2( const vector<double> &x ) { return(x[1] >= x[0]); }
bool Rule3( const vector<double> &x ) { return(x[3] == x[4]); }
bool Rule4( const vector<double> &x ) { return(x[0] != x[4]); }
bool Rule5( const vector<double> &x ) { return(x[1] >= x[0]); }
bool Rule6( const vector<double> &x ) { return(x[3] <= x[4]); }
bool Rule7( const vector<double> &x ) { return(x[0] < x[4]); }
bool Rule8( const vector<double> &x ) { return(x[1] >= x[0]); }
bool Rule9( const vector<double> &x ) { return(x[3] <= x[4]); }

bool rule3( const int n, const vector<double> &x )
{
  typedef bool (*RULE)( const vector<double>& );
  static const RULE Rules[] = {Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9,
                               Rule0, Rule1, Rule2, Rule3, Rule4, Rule5, Rule6, Rule7, Rule8, Rule9};

  return(Rules[n](x));
}

#define  BENCH(A)                                                              \
  StartTime = GetMicrosecondCount();                                          \
  A;                                                                          \
  Print(#A + " - " + (string)(GetMicrosecondCount() - StartTime) + " mcs");

void OnStart()
{
  const vector<double> x = {1, 2, 3, 4, 5};
  int Tmp = 0;

  ulong StartTime;

  BENCH(for (uint i = 1 e8; (bool)i--;) Tmp += rule(i % 100, x));
  BENCH(for (uint i = 1 e8; (bool)i--;) Tmp += rule2(i % 100, x));
  BENCH(for (uint i = 1 e8; (bool)i--;) Tmp += rule3(i % 100, x));
//  BENCH(for (uint i = 1e8; (bool)i--;) Tmp += rule(i % 100, x));  // Если добавить эту строку, то выше rule замедлится.
//  BENCH(for (uint i = 1e8; (bool)i--;) Tmp += rule2(i % 100, x)); // Если добавить эту строку, то выше rule2 замедлится.
//  BENCH(for (uint i = 1e8; (bool)i--;) Tmp += rule3(i % 100, x)); // Если добавить эту строку, то выше rule3 замедлится.

  Print(Tmp);
}


Sonuç.

for (uint i = 1 e8; (bool)i--;) Tmp += rule(i % 100, x) - 505436 mcs
for (uint i = 1 e8; (bool)i--;) Tmp += rule2(i % 100, x) - 261261 mcs
for (uint i = 1 e8; (bool)i--;) Tmp += rule3(i % 100, x) - 709846 mcs


Burada neyin ölçüldüğü net değil - vurgulanan yorumlara bakın. İddiaya göre kural2'den çok daha hızlı.

Dosyalar:
 
fxsaber #:

İlginç bir şekilde, bir miktar veriye (alıntı) sahip olma açısından, MO ile karşılaştırıldığında insan beyni (bir sinir ağı olarak) bir insanla karşılaştırıldığında bir infusoria gibidir.

Bununla birlikte, ilkel insanlar oldukça iyi çalışan TC'ler yaratabileceklerini kanıtlamışlardır. Çalışan bir TC oluşturmak için çok büyük miktarda veri gerekmediği ortaya çıktı.

Örneğin, insanoğlunun scalper modellerini çalıştırma noktasına nasıl geldiği benim için bir muamma. Bu neredeyse tamamen sayı hesaplayıcılar olmadan yapıldı.


Bunun senaryosu görünüşe göre şöyle bir şeydi:

  1. Sık sık bir tür düzleşme görüyorum (birkaç gündür aptalca ekranda taşlama yapıyorum).
  2. İlkel bir TS ile para kazanmaya çalışacağım.
  3. Çok fazla akmıyor. TS'yi biraz rafine etmeliyim. Ticaret geçmişine baktım - bir şeyler geliştirilebilir gibi görünüyor.
  4. Biraz artıya geçmeye başladı. 3. noktayı tekrarlayın.
Sayı hesaplamadım. Sadece 1. noktaya baktım ve yapmaya başladım. Bu yaklaşımın olasılığı sıfır gibi görünüyor ama bir şekilde işe yarıyor. Bir çeşit çalışan deli dürtme yöntemi.


Görünüşe göre, insan beyni bilinçaltında hala son derece küçük miktarda veri üzerinde "kalıplar" bulabiliyor. Buna şans diyemezsiniz. Bu bir gizem.

Bence işin sırrı deneyim aktarımında, yeni olan her şey bir önceki neslin başarıları üzerine inşa ediliyor. Modern işlemcileri ele alalım. 19. yüzyıldaki insanlar için bu bir sihir olacaktır. 20. yüzyıl için ise tersine mühendislik için doğru araçlara sahip olmayan çok karmaşık bir teknoloji olacaktır. Modern teknoloji seviyesine ancak bilgi transferi ve kademeli gelişim yoluyla ulaşabiliriz. Bu yüzden 3. Dünya Savaşı çıkarsa, 4. Dünya Savaşı'nda taşlarla savaşacaklarını söylüyorlar. Ticaretle ilgili efsaneler var, daha önceki piyasaların çok daha kolay olduğu ve zirve tüccarlarının hareketli ortalamaların yardımıyla servet kazandıkları, şimdi bunu yapmak mümkün olmayacak.

 
fxsaber #:

Burada neyin ölçüldüğü oldukça belirsiz - vurgulanan yorumlara bakın. İddiaya göre kural2'den çok daha hızlı.

Burada bu fonksiyon ve C++'dakiler de dahil olmak üzere farklı uygulamaları (eşdeğerleri) ölçüldü.

Şimdilik mimariye çoktan karar verdim, şimdilik saf R-ke üzerinde oturacağım, 25 kat hızlandırmanın bir yolunu buldum + koduma C++ eklememek için hala artılar / güçlü nedenler var.

 

AMO'mla bir meydan okuma yapabilirsin.

"TS'yi çöz."


Bana kullandığınız küçük bir veri parçası verin.

Kodda hangi operatörleri, fonksiyonları ve değişkenleri kullandığınızı açıklıyorsunuz.

Ve bana algoritmanın eşitliğini ya da sinyallerini veriyorsunuz.


Bir arama grameri oluşturuyorum ve kodu bir şifre olarak alıp TS'nizi çözüyorum.