Performans yoğun ağlarla karşılaştırılabilir ve eğitim hızı birkaç kez artırılabilir Seyrek ağları sıfırdan eğitmek için "seyrek öğrenme" nasıl kullanılır?

Yazar | Tim Dettmers

Derleme | JocelynWang

Editör | Tang Li

Bu makale, eğitimi hızlandırmak için eğitim dönemi boyunca sinir ağının seyrekliğini korumak için Luke Zettlemoyer ile işbirliği yaptığım bir çalışmayı tanıtıyor. Bu işin kanıtı, Seyrek momentum algoritmasını geliştirerek, yalnızca bir eğitim seansında seyrek rastgele ağırlıklara sahip bir sinir ağını başlatmak ve yoğun bir ağın performans seviyesine ulaşmasını sağlamak mümkündür.

Ayrıca, optimize edilmiş seyrek evrişim algoritması kullanılırsa, sinir ağının eğitim hızını, VGG ağının eğitim hızının 3,5 katı ile geniş artık ağın (WRN'ler) eğitim hızının 12 katı arasında hızlandırabiliriz. Bu, 2019'da Frankle ve Carbin tarafından önerilen "piyango hipotezi" gibi, evrişimli katmanın birden fazla budama ve yeniden eğitilmesini gerektiren ve hesaplama açısından pahalı olan bazı yöntemlerle keskin bir tezat oluşturuyor.

Bu şekilde, seyrek bir ağı yoğun bir ağın performans düzeyine eğitmenin "ilk piyango bileti kazanmayı" gerektirmediğini, ancak "ağırlıkları çevredeki ağa mantıklı bir şekilde taşıma" yöntemiyle birleştirilebileceğini kanıtladık. Bunu başarmak için rastgele ağırlıklara güvenebilirsiniz. Yoğun bir ağın performansını korurken seyrekliği koruyan paradigmaya "seyrek öğrenme" diyoruz. Bu çalışma, seyrek öğrenmeyi başarma olasılığını gösterse de, bir sonraki adımda, mevcut yoğun ağ ile aynı veya daha az bilgi işlem kaynağına ihtiyaç duyarken daha büyük bir eğitim ölçeğiyle daha fazla veri üzerinde eğitim alabilmeyi umuyoruz. Büyük ve daha derin ağlar.

1. Neden seyrek öğrenmeyi tercih ediyoruz?

Bilgi işlem kaynaklarının gelişmesi, derin öğrenmenin ilerlemesini sağlayan önemli bir faktördür. 2010'dan 2018'e kadar, GPU hesaplama performansının% 9700 arttığını görebiliriz. Bununla birlikte, yarı iletken teknolojisinin fiziksel sınırlarına ulaşılması nedeniyle, GPU performansının önümüzdeki 5-8 yıl içinde yalnızca% 80'e kadar artmasını bekleyebiliriz. Peki, bilgi işlem gücünü daha fazla geliştiremeyen bir araştırma dünyası neye benzeyecek?

Bu, ELMO, GPT, BERT, GPT-2, Grover ve XL-Net gibi önceden eğitilmiş dil modellerinin çoğu NLP görevinde etkili olduğu doğal dil işleme (NLP) topluluğundan görülebilir. Diğer yöntemlerden daha iyi olduğu için tüm alanda baskın yöntem haline gelmiştir.

Bu modeller genellikle çok basittir: Onları çok sayıda belge üzerinde eğitirsiniz ve bir dizi başka kelime verilen bir kelimeyi tahmin edersiniz - bu biraz boşluk doldurma oyunu gibidir. O zaman sorabilirsiniz, bunda yanlış bir şey var mı? Aslında, bu modeller o kadar büyük ki 100 GPU saatinden çok daha fazla eğitim süresi gerektiriyorlar. Bu, özellikle bu modelleri anlamak isteyen ancak bu eğitimi başarmak için büyük şirketlerin bilgi işlem kaynaklarından yoksun olan akademik araştırmacılar için can sıkıcıdır. Bu devasa dil ön eğitim modellerini gerçekten anlamak için birincil hedef, daha esnek eğitim programları geliştirerek bu modellerin eğitim sürecini daha popüler hale getirmek olmalıdır.

Bu hedefe ulaşmanın bir yolu, insan beyninden ilham almaktır. İnsan beyni, GPU'nun enerjisinin 1 / 10'unu tüketir, ancak işlevi GPU'nun gücünün on katıdır. Beynin hesaplanmasını bu kadar verimli yapan nedir? Bunun birçok nedeni vardır (daha fazla bilgi için lütfen şu adrese bakın: https: // timdettmers .com / 2015/07/27 / beyin-vs-derin-öğrenme-tekilliği /) ve nedenlerinden biri de beynin seyrekliğidir.

Çalışmalar, primat beynindeki nöron sayısı arttıkça diğer nöronlarla daha az bağlantı olduğunu bulmuştur (Herculano Houzel ve diğerleri, 2010). Bu, derin sinir ağlarını tasarlama şeklimizden tamamen farklıdır - derin sinir ağları, ağın her katmanındaki her yeni nöronu önceki katmandaki tüm nöronlara bağlar. Tam eğitimli yoğun bir evrişimli sinir ağını seyrek bir ağa nasıl sıkıştıracağımızı zaten biliyoruz (Han ve diğerleri, 2015), ancak seyrek bir ağla nasıl başlayacağımızı ve eğitim sırasında ağı seyrek tutmayı çalışıyoruz. Hala nispeten az var. Yani ne yapmalıyız?

2. Seyrek momentum: seyrek ağları eğitmek için etkili bir yöntem

Bu bölüm, seyrek momentum algoritmasını sezgiselden eksiksiz bir algoritma perspektifine tanıtmaktadır.

Şekil 1: Seyrek momentum Seyrek ağdaki yeni ağırlığın büyüme konumunu belirlemek için son gradyanın (momentum) ağırlıklı ortalamasına bakarak, aynı zamanda hatayı azaltan ağırlık ve katmanı bulmak için. (1) Ortalama momentum büyüklüğüne göre her katmanın önemini belirleyin. (2) Her katmanda minimum ağırlığın% 50'sini kaldırıyoruz. (3) Ardından, her katmanın önemine göre ağırlığı katmanlar arasında yeniden dağıtırız. Aynı katmanda momentumun daha büyük olduğu yerlerde ağırlığı arttırıyoruz.

1. İyi bir seyrek öğrenme algoritmasının önemli özellikleri nelerdir?

Seyrek öğrenmede en önemli şey, sinir ağındaki her ağırlığı olabildiğince verimli kullanmaktır. "Etkililik", "hataları azaltmak" olarak tanımlanırsa, seyrek öğrenmeyi nasıl teşvik edeceğimiz konusunda daha net bir perspektife sahibiz. Bir ağırlığın hataları azaltmadaki etkinliğini tanımlamak için bir ölçüm yöntemi bulmamız ve tüm geçersiz ağırlıkları kaldırmamız gerekir. Bu ağırlıkları kaldırdıktan sonra, gelecekte hatanın azaltılmasının beklendiğine inandığımız yeni ağırlıkları yeniden oluşturmayı umuyoruz.

Ağırlığa karşılık gelen hatanın gradyanına bakarsak, aslında bir ölçüm yöntemimiz var. Bununla birlikte, gradyanı sürekli olarak gözlemlersek, gradyan büyük ölçüde dalgalanabilir. Örneğin, bir dizi el yazısıyla yazılmış rakamı 0'dan 9'a kadar sınıflandıran bir sinir ağınız varsa ve bu ağırlık, üstte düz bir çizgiyi rahatlıkla algılayabilir, 5 ve 7 rakamlarının algılama hatasını azaltmaya yardımcı olabilir, ancak 0, 1, 2, 3, 6, 8 ve 9 için, sadece yardımcı olmakla kalmayabilir, hatta ters etki yapabilir. Tersine, sağ üst köşedeki eğri modelini tespit etmenin ağırlığı 0, 2, 3, 8 ve 9 sayılarının tespitine yardımcı olabilir. Bu nedenle, ağırlığın hataları azaltmada "üst düz çizgi" ağırlığından daha tutarlı olmasını umuyoruz. Sinir ağında bu kadar etkili ağırlıklar otomatik olarak nasıl tespit edilir?

2. Momentum: Hatayı sürekli olarak azaltabilecek ağırlığı bulun

Kuzey Kutbu yerel bir minimum olarak kabul edilirse ve yerel minimuma işaret eden pusula bir gradyan olarak kabul edilirse, pusula çılgınca sallanarak döndürülebilir, böylece stokastik gradyan inişini simüle eder ve günceller. İşaretçi Kuzey Kutbu'na her baktığında yavaşlayacak ve Kuzey Kutbu'na doğru gittikçe daha fazla işaret edecek, ancak dönme ataleti nedeniyle yine de bu yönü "geçecektir". Bu nedenle, Kuzey Kutbu hala ileri geri hareket ederken, Kuzey Kutbu'nun iki veya üç ölçümden tam olarak nerede olduğunu bilemeyebilirsiniz. Ancak, ortalama yönü alırsanız - bir kez işaretçi Kuzey Kutbu'nun biraz solunda, başka bir sefer de sağa - sapma kaybolacak ve hemen gerçek Kuzey Kutbu'na çok yakın bir yön elde edeceksiniz.

Momentum optimizasyon tekniğinin arkasındaki ana fikir budur: Yerel minimum yönün en iyi tahminini elde etmek için sürekli eğimin ortalamasını alırız. Pusulaya benzer şekilde, zaman geçtikçe, pusula yön değişiminin hızı yavaşlar ve yavaşlar, bu nedenle son gradyan yönünü ölçmek için stokastik gradyan inişinde daha yüksek ağırlığı kullanmayı umuyoruz. Bir yöntem, ağırlıklı ortalama atamaktır, yani mevcut gradyan için daha büyük bir ağırlık ve önceki gradyan için daha küçük bir ağırlık atamaktır - buna üstel düzeltme de denir. Ağırlıkların gradyanını üssel olarak düzleştirerek, ağırlıklı bir gradyan matrisi elde ederiz, bu matris momentum optimizasyonunun gerçekleştirilebileceği momentum matrisidir. Bu şekilde, hangi ağırlıkların hatayı sürekli olarak azaltabileceğini belirleyebiliriz.

3. Ağırlığın yeniden dağıtılması: katmanın ortalama momentumu

Buradan seyrek momentum algoritmasının ilk önemli gözlemini yapıyoruz: Bir ağırlığın momentumu sürekli olarak düşürdüğü hata değerinin büyüklüğünü temsil ediyorsa, o zaman ağın her katmanındaki tüm ağırlıkların ortalama momentumu her katmanın ortalama hata değerini temsil eder. Küçültülmüş boyut. Bu değeri almamızın nedeni, iki farklı ağırlığın sürekli olarak negatif veya pozitif yönde değişebilmesidir. Her katmanın ortalama momentumunu hesaplayarak, her katmanın ortalama ağırlığının etkinliğini kolayca karşılaştırabiliriz.

Bu, örneğin hataları azaltma açısından, evrişimli katman A'nın ortalama ağırlığının, tamamen bağlı katman B'nin ortalama ağırlığının 1 / 3'ü olmasını ve bunun tersini yapar. Bu yöntem, ağırlıkları etkili bir şekilde yeniden dağıtmamızı sağlar: "yararsız" ağırlıklar bulursak, artık tam olarak hangi katmanın yerleştirilmesi gerektiğini bilebiliriz. Ama belli bir seviyenin neresine yerleştirilmeli?

4. Hangi ağırlıklar çıkarılmalıdır? Nereye yeniden atanmalıdır?

Sonraki iki soru daha açık: En işe yaramaz ağırlıklar hangileri? Bir katmanda evrişimli katmanlar, ağırlık bir katmanın neresine eklenmelidir?

İlk sorun, sinir ağı sıkıştırması araştırmalarında yaygın bir sorundur.Bu soruna yanıt olarak, araştırmacılar tarafından genel olarak benimsenen yöntem, ağırlıkları budamak için en küçük momentumu kullanmaktır. Bunun anlamı ne? Tüm ağırlıkların benzer momentuma sahip girdilerin ortalamasının alınmasıyla elde edildiğini varsayarsak - bu, parti normalizasyonu kullanıldığında makul bir varsayımdır, daha küçük ağırlıklar nöronları aktive etme üzerinde en az etkiye sahiptir. Bu işe yaramaz ağırlıkların kaldırılması, tahmin sırasında sinir ağlarının performansını en aza indirebilir.

Yararsız ağırlıkları çıkardıktan ve bunları katmanın ortalama momentumuna göre etkin ağırlık katmanına yeniden dağıttığımızda, bunları katman içinde tam olarak nereye dağıtacağımıza karar vermemiz gerekir. Birisi sorarsa: "Bağlantısız bir durumda olan hangi iki nöron, hataları sürekli olarak azaltmak için bağlanabilir?" Bu sorunun cevabı yine momentumun büyüklüğüne işaret ediyor. Ancak bu sefer "eksik" veya sıfır değerli ağırlıkların momentumunu incelemek istiyoruz, yani daha önce eğitimin dışında bırakılan ağırlıkları gözlemlemek istiyoruz. Bu nedenle, eksik ağırlığın en fazla momentuma sahip olduğu yerde ağırlığı arttırıyoruz. Bu, Şekil 1'de gösterildiği gibi seyrek momentum algoritmasını tamamlar.

3. Sonuç analizi

Diğer sıkıştırma algoritmaları ile karşılaştırmak için MNIST el yazısı veri kümesindeki seyrek momentum kullanıldığında, sonuçlar etkileyicidir. Bunlar arasında seyrek momentum diğer yöntemlerin çoğundan daha iyidir. Seyrek bir ağı sıfırdan eğitmek için kullanılan sıkıştırma yönteminin yoğun ağdan başladığını ve genellikle ayrı ayrı tekrarlanan eğitimi gerektirdiğini düşünürsek, bu sonucun çok iyi olduğu söylenebilir.

Bir başka etkileyici bulgu, ağ% 20 ağırlık (% 80 seyreklik) kullandığında, performansının yoğun ağa eşit veya ondan daha iyi olabileceğidir.

CIFAR-10'da, bunu tek bir ağ budama ile karşılaştırdık: ikincisi, bir performans iyileştirmesi yerine basit bir yapı elde etmek için tasarlandı, bu nedenle seyrek momentum sonuçlarının daha iyi olması şaşırtıcı değil.

Ancak, VGG16-D'yi (VGG16'nın iki tam bağlantılı katmana sahip bir sürümü) ve Wide Residual Network (WRN) 16-10'u (16 katman derinliğinde ve Çok geniş WRN) yoğun bir ağın performans düzeyine göre eğitilmiştir. Diğer ağlar için, seyrek momentum, yoğun ağların performans düzeyine yakındır. Ek olarak, daha sonra göstereceğim gibi, aynı performans seviyesini elde ederken eğitim hızını bir önceki seviyeye yükseltebilecek optimize edilmiş seyrek evrişim algoritmasını kullanıyoruz. 3.0 5.6 katına!

Şekil 2: Sırasıyla seyrek momentum ve sinir ağı sıkıştırma algoritmaları kullanılarak MNIST el yazısı veri setinde LeNet-300-100 ve LeNet-5caffe eğitiminin sonuçlarının karşılaştırılması

ImageNet altında seyrek momentum ve ilgili yöntemlerin sonuçlarının karşılaştırılması. Tamamen seyrek olmayan bir modelde, ilk evrişimli katman ile tüm alt örnekleme kalıntıları arasındaki bağlantılar eğitimin başlangıcından itibaren yoğundur. Tamamen seyrek bir ağ ortamında, tüm katmanlar seyrektir. Genel olarak konuşursak, seyrek momentum diğer yöntemlere göre daha etkilidir ve tüm ağırlıklar seyrek olarak sunulduğunda, diğer yöntemlerin etkileri hemen hemen aynıdır. Bu, seyrek momentumun, yüksek yoğunluk gerektiren önemli evrişimli katmanlar ararken çok etkili olduğunu göstermektedir.

ImageNet'te yoğun ağların performans düzeyine ulaşamıyoruz, bu da seyrek momentumda iyileştirme için yer olduğunu gösterir. Bununla birlikte, eğitim sırasında seyrek ağırlıkları korurken seyrek momentumun diğer yöntemlere göre bariz avantajları olduğunu hala kanıtlayabiliriz.

Hızlandırılmış eğitim

Seyrek öğrenmenin temel işlevlerinden biri eğitimi hızlandırmaktır - başardık mı? Hem evet hem de hayır. Seyrek evrişimli bir ağın olası ivmesini ölçersek, o zaman seyrek momentum eğitim sürecini etkili bir şekilde hızlandırabilir.Ancak, seyrek ağ sadece son zamanlarda eğitim için kullanılıyorsa, GPU için optimize edilmiş bir seyreklik yoktur. Evrişim algoritması, en azından seyrek momentum tarafından temsil edilen ağırlığın ince taneli seyrek biçimi için mevcut değildir.

Bu nedenle, ivmeyi iki kısma ayırıyoruz: Seyrek bir evrişim algoritması varsa, ivme elde etmek mümkündür ve artık hızlanma elde etmek için standart yoğun evrişim algoritmaları kullanılabilir. Yoğun evrişim, seyrek ağların eğitim sürecini hızlandırmasına nasıl yardımcı olur?

Ağın seyrek biçimine bakarsak, evrişim kanalının tamamen boş olduğunu görürüz - tamamen sıfır evrişim filtresi! Böyle bir durumda, konvolüsyon sonucunu değiştirmeden kanalı hesaplamadan çıkarabiliriz, böylece hızlanma sağlanır.

Seyrek momentum, hızlanma elde etmek için az miktarda ağırlıkla bir dizi ağın yoğun performans seviyelerini yeniden üretebilir.

Bununla birlikte, çeşitli ivmeler gözlemlersek, seyrek evrişimli ivme ile yoğun evrişimli ivme arasında önemli bir fark bulacağız. Bu, GPU'nun seyrek evrişim algoritmasını optimize etmesi gerektiğini de gösterebilir.

4. Seyrek öğrenme neden etkilidir?

Seyrek momentum ile eğitilen bazı seyrek ağların performansı, yalnızca% 5 ağırlığa sahip yoğun ağ eğitiminin sonuçlarıyla tutarlıdır. Bu% 5 ağırlıklandırmayı, 20 kat ağırlığa sahip bir sinir ağıyla aynı etkiyi sağlayacak kadar etkili kılan nedir?

Bu sorunu keşfetmek için seyrek ağların özelliklerini yoğun ağların özellikleriyle karşılaştırıyoruz. Bunların arasında, düşük seviyeli özellikler kenar detektörlerini ve benzerlerini içerebilir, ara özellikler tekerlekler, burun, gözler ve pençeler olabilir ve yüksek seviyeli özellikler bir arabanın "yüzü", bir kedinin yüzü ve bir buzdolabı kapısı olabilir.

Özelliklerin sayısını azaltmak için, evrişimli kanalı (evrişimli ağdaki "nöron" a eşdeğer) ve bu kanalın veri kümesindeki sınıflar üzerinde ne kadar etkisi olduğunu inceliyoruz. Kenar dedektörleri, veri setindeki hemen hemen tüm sınıflar için etkilidir - başka bir deyişle, düşük seviyeli özellikler için belirli karşılık gelen sınıflara sahiptirler; gözler gibi ara özellikler için, kediler, köpekler ve insanlar için yararlı sınıflar olmalıdır; Gelişmiş özellikler, gelişmiş özelliklere büyük ölçüde karşılık gelen seçili sınıflar için yararlı olmalıdır.

Şekil 6: AlexNet, VGG16 ve WRN 28-2 ağlarının seyrek ve yoğun ağlara karşılık gelen özel histogramları

Genel olarak, seyrek ağların daha geniş bir sınıf yelpazesi için yararlı olan özellikleri öğrenebildiğini, ancak daha sıklıkla ortak özellikleri öğrendiğini gördük. Bu, seyrek ağların yoğun ağlarla tutarlı performans elde etmek için neden% 5 ağırlık kullanabildiğini açıklayabilir.

5. Seyrek öğrenmenin geleceği

Seyrek öğrenmenin çok parlak bir geleceği olduğuna inanıyorum çünkü: (1) GPU performansı önümüzdeki birkaç yıl içinde duracak; (2) Seyrek iş yükleri için özel bir işlemci olan Graphcore işlemci ortaya çıkmak üzere. Graphcore işlemcisi, tüm ağı 300 MB önbelleğinde depolar ve yaklaşık 100 kat hızlandırır.

Bu, eğitim sırasında ağı 300 MB'ye sıkıştırabilirsek, genel eğitim hızımızın 100 kat artacağı anlamına gelir. ImageNet üzerinde ResNet-50'yi eğitmek için bir Graphcore işlemci kullanmak sadece 15 dakika sürer. Seyrek öğrenmeyle, 300 MB'lık ağ boyutu sınırı bir sorun olmayacaktır.

Graphcore işlemci üzerinde seyrek bir sinir ağını başarıyla eğitebilen ilk araştırma ekibinin yeni bir yapay zeka dönemi açacağını tahmin ediyorum.

Ek olarak, başka bir zorluk, seyrek öğrenme algoritmalarını doğal dil işlemeye (NLP) uygulamaktır. Şaşırtıcı olmayan bir şekilde, doğal dil işleme görev dönüştürücüsüyle ilgili deneylerim, bilgisayarla görü ile karşılaştırıldığında seyrek öğrenmenin doğal dil işlemede çok daha zor olduğunu gösteriyor - gelecekte yapılacak çok şey var!

6. 10 satır kod kullanarak kendi kendinize seyrek bir momentum modeli yazmaya çalışın!

Şekil 7: Kendi modeliniz için kullanabileceğiniz genel bir seyrek öğrenme komut dosyası örneği. Ayrık öğrenme kitaplığını kullanarak seyrek momentumu kullanmak kolaydır: (1) kitaplığı içe aktarın, (2) ayrıştırıcı seçeneklerini ekleyin, (3) modeli Maskeleme sınıfıyla sarın, (4) optimize edici yerine maske uygulayın, (5) yinelemelerin sonunda Seyrek momentum uygulayın. Kütüphane ayrıca büyümeyi, budamayı veya yeniden dağıtımı sağlamak için kendi seyrek öğrenme algoritması ile kolayca genişletilebilir - tüm bunlar sadece birkaç satır kodla yapılır!

Herkesin seyrek öğrenme konusunda daha derin bir anlayışa sahip olması için, seyrek momentum gibi mevcut algoritmaları kendi modelinize kolayca uygulamanıza ve 10 satırdan daha azını kullanmanıza olanak tanıyan seyrek bir öğrenme kütüphanesi geliştirdim. Kod tamamlandı. Bu kütüphanenin tasarımı, kendi seyrek öğrenme yöntemlerinizi eklemenizi de çok kolaylaştırır. Bu geliştirme kitaplığını aşağıdaki adreste görüntülemek için GitHub'a gidebilirsiniz:

https: // github .com / TimDettmers / sparse_learning

Referanslar

  • Frankle, J. ve Carbin, M. (2019). Piyango bileti hipotezi: Seyrek, eğitilebilir sinir ağları bulma. ICLR 2019'da.

  • Han, S., Pool, J., Tran, J., and Dally, W. (2015). Verimli sinir ağı için hem ağırlıkları hem de bağlantıları öğrenme. Sinirsel bilgi işleme sistemlerindeki gelişmelerde, sayfalar1 135 -1 143 .

  • Herculano-Houzel, S., Mota, B., Wong, P., ve Kaas, JH (2010). Primat serebral kortekste bağlantı odaklı beyaz cevher ölçeklenmesi ve katlanması. Birleşik Devletler Ulusal Bilimler Akademisi Bildirilerinde of America, 10744: 19008-13.

https: // timdettmers aracılığıyla .com / 2019/07/11 / sıfırdan seyrek ağlar /

Birleşik öğrenme: Derin öğrenmeden sonra, yapay zeka güvenliğinin ikinci ayağı
önceki
Yeni Fikri Mülkiyet Koruması Anlaşması, Bilgi Sektörü Ödemesinin Geliştirme Durumunun Bilgi Analizine Yönelik Ödemeyi Destekliyor (Şekil)
Sonraki
İlkokul öğrencileri sınavda 90 puanı geçemedi ve birlikte ayrıldı
Açık yaşam! Akademisyen olarak seçilen ve ACM / IEEE ikili arkadaşları olan Çinli akademisyenler
Borç içinde olduğunuzda ve çevrenizdeki insanlar tarafından hor görüldüğünüzde, hisse senedi alım satımının "Buffett tarzı" düşüncesine daha yakından bakmanızı öneririm.
Çin'deki çok uluslu şirketler | Schaeffler, Hunan, Xiangjiang Yeni Bölgesi'nde bir Ar-Ge merkezi kuracak; Shangri-La Hotel, Şangay Hongqiao Havalimanı'nda yer almaktadır
191124 Genç oyuncu Lu Han onur anına tanık oldu ve selefi Ye Xiaogang en iyi müzik ödülünü açtı.
Çin Mühendislik Akademisi akademisyeni Wang Jian bunu nasıl başardı?
PR Newswire | Çin'in otomatik değer koruma oranı listesi açıklandı; Lenovo Foxconn ve diğerleri, Çin'in akıllı imalat endüstrisi için "Altın Çin Seddi" ödülü olarak seçildi
Shandong Longzhong Information Technology Co., Ltd. ve Zibo Enerji Geliştirme Merkezi stratejik bir işbirliği anlaşması imzaladı
2019 Chongqing Uluslararası Badminton Açık bugün başladı
Neden 100.000'in altındaki yatırımcılar genellikle para kazanamıyor? "Küçük yang'ın büyük bir yangı olması gerektiğini ve küçük yin'in büyük bir yin'i olması gerektiğini" bile bilmiyorlar.
Wall Street kodamanları A hisselerini bozuyor: Çok borçlu olduğunuzda ve hatta akrabalarınız sizi ihmal ettiğinde, yoksulluktan servete dönmek için "MACD üç eksenli" kullanabilirsiniz.
Mahkemedeki siyah patron, başsavcıyı teşhis etti: para toplandı ve mesele yapılmadı
To Top