이 문서는 딥 러닝 모델을 더 효과적으로 학습시키는 데 도움이 됩니다.
이 문서에서는 초매개변수 조정을 중점적으로 설명하지만 학습 파이프라인 구현 및 최적화와 같은 딥 러닝 학습의 다른 측면도 다룹니다.
이 문서에서는 머신러닝 작업이 지도 학습 문제이거나 이와 유사한 문제 (예: 자체 감독 학습)라고 가정합니다. 그러나 이 문서의 조언은 다른 유형의 머신러닝 문제에도 적용될 수 있습니다.
타겟 잠재고객
이 문서는 머신러닝 및 딥 러닝에 관한 기본 지식이 있는 엔지니어와 연구원을 대상으로 작성되었습니다.
해당 배경 지식이 없다면 머신러닝 단기집중과정을 수강해 보세요.
이 문서를 작성한 이유
현재 심층신경망이 실제로 잘 작동하도록 하려면 엄청난 노력과 추측이 필요합니다. 게다가 딥 러닝으로 좋은 결과를 얻기 위해 사용하는 실제 레시피는 기록되는 경우가 거의 없습니다. 종이는 보다 분명한 스토리를 제시하기 위해 최종 결과를 도출한 과정을 간결히 보여주며 상업적인 문제를 담당하는 머신러닝 엔지니어는 한 걸음 물러나 프로세스를 일반화할 시간이 거의 없습니다. 교과서는 저자가 유용한 조언을 제공하는 데 필요한 경험을 갖추고 있더라도 실용적인 가이드를 피하고 기본 원칙을 우선시하는 경향이 있습니다.
이 문서를 만들기 위해 준비할 때 딥 러닝으로 좋은 결과를 얻는 방법을 실제로 설명하는 시도를 찾지 못했습니다. 대신 블로그 게시물과 소셜 미디어에서 조언 스니펫을 발견하고, 연구 논문 부록을 살짝 공개하며, 한 가지 특정 프로젝트나 파이프라인에 관한 가끔 우수사례를 제공하고, 많은 혼란을 발견했습니다. 딥 러닝 전문가와 표면적으로 유사한 방법을 사용하는 숙련도가 낮은 실무자들이 얻은 결과 사이에는 엄청난 차이가 있습니다. 하지만 전문가들은 일부 행동이 타당하지 않을 수 있다는 점을 분명히 인정합니다. 딥 러닝이 성숙해지고 세상에 큰 영향을 미치고 있는 만큼, 커뮤니티에는 좋은 결과를 얻는 데 매우 중요한 모든 실용적인 세부정보를 포함하여 유용한 레시피를 다루는 더 많은 리소스가 필요합니다.
5명의 연구원과 엔지니어로 구성된 팀에서 수년간 딥 러닝을 사용해 왔으며, 일부는 2006년부터 운영되고 있습니다. 음성 인식부터 천문학에 이르기까지 모든 분야에서 딥 러닝을 적용했습니다.
이 문서는 신경망을 학습시키고 새로운 머신러닝 엔지니어를 교육하며 동료들에게 딥 러닝 관행에 대한 조언을 제공하는 경험에서 비롯되었습니다.
딥 러닝이 소수의 학술 연구 기관에서 실행되었던 머신러닝 접근 방식에서 수십억 명이 사용하는 제품에 기반하는 기술로 발전하는 모습을 지켜보며 만족감을 느꼈습니다. 그러나 딥 러닝은 아직 엔지니어링 학문으로서 아직 시작 단계에 있으므로 이 문서를 통해 다른 사람들이 이 필드의 실험용 프로토콜을 체화하는 데 도움이 되기를 바랍니다.
이 문서는 딥 러닝에 대한 Google의 접근 방식을 구체화하기 위해 마련되었습니다. 따라서 객관적 진실이 아닌 작성 당시의 의견을 나타냅니다. 초매개변수 조정과 관련된 Google의 노력으로 인해 이 가이드가 특히 중점을 둬야 할 부분이 많았지만 작업 중에 겪었던 다른 중요한 문제 (또는 잘못 확인됨)도 다룹니다. Google은 이 작업이 신념의 변화에 따라 성장하고 진화하는 살아있는 문서가 되기를 바랍니다. 예를 들어 2년 전에는 학습 실패 및 디버깅 실패에 관한 자료를 최신 자료와 지속적인 조사를 토대로 작성할 수 없었을 것입니다.
당연히 새로운 결과와 개선된 워크플로를 고려하여 일부 조언을 업데이트해야 합니다. 최적의 딥 러닝 레시피는 아직 모르지만, 커뮤니티가 여러 절차를 작성하고 논의하기 시작할 때까지 이 프로세스를 찾을 수 있기를 바라고 있습니다. 따라서 Google의 조언으로 문제가 있는 독자에게 플레이북을 업데이트할 수 있도록 설득력 있는 증거와 함께 대체 권장사항을 생성하도록 권장합니다. 또한 커뮤니티마다 권장사항을 참고할 수 있도록 다양한 가이드가 포함된 대체 가이드와 플레이북이 있으면 좋겠습니다.
로봇 이모티콘 정보
로봇 그림 이모티콘은 더 자세히 조사해야 할 영역을 나타냅니다.
이 플레이북을 작성하려고 한 후야 딥 러닝 실무자의 워크플로에서 흥미롭고 소외된 연구 질문을 얼마나 많이 찾을 수 있는지 확실히 알 수 있었습니다.
[null,null,["최종 업데이트: 2023-08-26(UTC)"],[[["\u003cp\u003eThis guide focuses on hyperparameter tuning and other practical aspects of deep learning training to improve model effectiveness.\u003c/p\u003e\n"],["\u003cp\u003eIt targets engineers and researchers with basic machine learning and deep learning knowledge, recommending the Machine Learning Crash Course for beginners.\u003c/p\u003e\n"],["\u003cp\u003eThe document addresses the lack of comprehensive, practical guidance on achieving good results with deep learning, aiming to bridge the gap between experts and less experienced practitioners.\u003c/p\u003e\n"],["\u003cp\u003eIt reflects the authors' experience and opinions, focusing on hyperparameter tuning and other practical issues, and is intended to be a living document that evolves with the field.\u003c/p\u003e\n"],["\u003cp\u003eThe robot emoji (🤖) highlights areas where further research is needed to improve deep learning workflows.\u003c/p\u003e\n"]]],[],null,["# Deep Learning Tuning Playbook\n\nThis document helps you train deep learning models more effectively.\nAlthough this document emphasizes hyperparameter tuning, it\nalso touches on other aspects of deep learning training,\nsuch as training pipeline implementation and optimization.\n\nThis document assumes your machine learning task is either a\n[supervised learning](/machine-learning/glossary#supervised-machine-learning)\nproblem or a similar problem (for example,\n[self-supervised learning](/machine-learning/glossary#self-supervised-learning))\nThat said, some of the advice in this document\nmay also apply to other types of machine learning problems.\n| **Note:** This document is based on an earlier version, which is stored on [GitHub](https://github.com/google-research/tuning_playbook). The names and affiliations of the authors are available on the github version.\n\nTarget audience\n---------------\n\nWe've aimed this document at engineers and researchers with at least\na basic knowledge of machine learning and\n[deep learning](/machine-learning/glossary#deep-model).\nIf you don't have that background, please consider taking\n[Machine Learning Crash Course](/machine-learning/crash-course).\n\nWhy did we write this document?\n-------------------------------\n\nCurrently, there is an astonishing amount of toil and guesswork involved in\ngetting deep neural networks to work well in practice. Even worse, the\nactual recipes people use to get good results with deep learning are rarely\ndocumented. Papers gloss over the process that led to their final results in\norder to present a cleaner story, and machine learning engineers working on\ncommercial problems rarely have time to take a step back and generalize their\nprocess. Textbooks tend to eschew practical guidance and prioritize fundamental\nprinciples, even if their authors have the necessary experience in applied work\nto provide useful advice.\n\nWhen preparing to create this document, we couldn't\nfind any comprehensive attempt to actually explain *how to get good results with\ndeep learning*. Instead, we found snippets of advice in blog posts and on social\nmedia, tricks peeking out of the appendix of research papers, occasional case\nstudies about one particular project or pipeline, and a lot of confusion. There\nis a vast gulf between the results achieved by deep learning experts and less\nskilled practitioners who are using superficially similar methods. However,\nthe experts readily admit that some of what they do might not be\nwell-justified. As deep learning matures and has a larger impact on the world,\nthe community needs more resources covering useful recipes, including all the\npractical details that can be so critical for obtaining good results.\n\nWe are a team of five researchers and engineers who have worked in deep learning\nfor many years, some of us since as early as 2006. We have applied deep learning\nin everything from speech recognition to astronomy.\nThis document grew out of our own experience training neural\nnetworks, teaching new machine learning engineers, and advising our colleagues\non the practice of deep learning.\n\nIt has been gratifying to see deep\nlearning go from a machine learning approach practiced by a handful of academic\nlabs to a technology powering products used by billions of people. However,\ndeep learning is still in its infancy as an engineering discipline, and we hope\nthis document encourages others to help systematize the field's\nexperimental protocols.\n\nThis document came about as we tried to crystallize our own approach to deep\nlearning. Thus, it represents our opinions at the time of\nwriting, not any sort of objective truth. Our own struggles with hyperparameter\ntuning made it a particular focus of our guidance, but we also cover other\nimportant issues we have encountered in our work (or seen go wrong). Our\nintention is for this work to be a living document that grows and evolves as our\nbeliefs change. For example, the material on debugging and mitigating training\nfailures wouldn't have been possible for us to write two years ago because it\nis based on recent results and ongoing investigations.\n\nInevitably, some of our advice will need to be updated to account for new\nresults and improved workflows. We don't know the *optimal* deep learning\nrecipe, but until the community starts writing down and debating different\nprocedures, we cannot hope to find it. To that end, we would encourage readers\nwho find issues with our advice to produce alternative recommendations, along\nwith convincing evidence, so we can update the playbook. We would also love to\nsee alternative guides and playbooks that might have different recommendations\nso we can work towards best practices as a community.\n\nAbout that robot emoji\n----------------------\n\nThe robot 🤖 emoji indicates areas where we would like to do more research.\nOnly after trying to write this playbook did it become completely clear how\nmany interesting and neglected research questions\ncan be found in the deep learning practitioner's workflow."]]