Skip to content

Instantly share code, notes, and snippets.

@sailfish009
Created February 18, 2020 02:40
Show Gist options
  • Select an option

  • Save sailfish009/c3ff97b8f93836cb1e346c2b6520064b to your computer and use it in GitHub Desktop.

Select an option

Save sailfish009/c3ff97b8f93836cb1e346c2b6520064b to your computer and use it in GitHub Desktop.
http://joschu.net/blog/opinionated-guide-ml-research.html
ML 연구에 대한 의견 가이드
게시일 : 2020/01/24
← 블로그 인덱스로 돌아 가기
원래 2017 년 12 월에 OpenAI Fellows 프로그램을 위해이 안내서를 작성했습니다.
이 글에서, 나는 연구를하고 다른 사람들을 조언 한 경험을 바탕으로 기계 학습 (ML) 분야의 신입 연구원들에게 조언을한다. 조언은 문제를 선택하고 시간을 구성하는 방법을 다룹니다. 또한 비슷한 주제에 대한 다음과 같은 에세이를 권장합니다.
Richard Hamming의 귀하와 귀하의 연구
Michael Nielsen 의 효과적인 연구 원칙
내 에세이도 비슷한 배경을 다루지 만 ML의 독특한 특징에 더 잘 맞춰져 있습니다.
성공의 열쇠는 올바른 문제를 해결하고 문제를 지속적으로 해결하며 지속적인 개인 성장을 달성하는 것입니다. 이 에세이는 세 가지 섹션으로 구성되며 각 섹션은 이러한 주제 중 하나를 다루고 있습니다.
운동 계속하기 전에 ML에서 찾은 결과와 성과가 가장 흥미롭고 유익한 정보를 몇 분 동안 사용하는 것이 좋습니다. 어떤 문제에 대한 당신의 관점을 바꾸어 놓은 획기적인 결과이든, 각각을 두드러지게하는 것이 무엇인지 생각해보십시오. 또는 재사용 가능한 알고리즘 아이디어; 반복되는 질문에 대한 깊은 통찰력. 이 구경의 결과, 알고리즘 및 통찰력을 얻으려면 열망해야합니다.
문제 선택
당신의 맛을 연마
작업 할 올바른 문제를 선택할 수있는 능력은 원시 기술 능력보다 훨씬 중요합니다. 이러한 문제의 맛은 어떤 아이디어가 번성하고 어떤 아이디어가 잊혀지는지를 보면서 시간이 지남에 따라 발전 할 것입니다. 어떤 아이디어가 새로운 아이디어와 결과를위한 빌딩 블록 역할을하는지, 어떤 아이디어가 너무 복잡하거나 깨지기 쉽거나 점진적 개선이 너무 작기 때문에 무시되는 것을 볼 수 있습니다.
어떤 문제가 발생했는지에 대한 좋은 맛을 개발하는 과정을 가속화하는 방법이 있는지 궁금 할 것입니다. 실제로 몇 가지 좋은 방법이 있습니다.
많은 논문을 읽고 비판적으로 평가하십시오. 가능하면 주제에 대해 더 깊이 알고있는 다른 사람들과 토론하십시오.
비슷한 주제를 다루는 다른 사람들과 함께 연구 그룹에서 일하십시오. 그렇게하면 자신의 경험뿐만 아니라 자신의 경험도 흡수 할 수 있습니다.
경험이 풍부한 연구자들에게 무엇을해야하는지 조언을 구하십시오. 다른 사람들이 제안한 아이디어에 대해서는 부끄러운 일이 없습니다. 아이디어는 싸고 공중에 많이 있습니다. 어떤 기술을 사용할 것인지, 얼마나 잘 수행 할 것인지 결정할 때 기술이 필요합니다.
어떤 연구가 유용하고 유익한지를 반영하여 시간을 보내십시오. 다음과 같은 질문에 대해 생각하십시오
이론은 언제 유용합니까?
경험적 결과는 언제 이전 될 수 있습니까?
어떤 아이디어는 널리 흡수되는 반면 다른 아이디어는 잊혀지는 이유는 무엇입니까?
해당 분야의 트렌드는 무엇입니까? 어떤 라인이 다른 라인을 쓸모 없게 만들 것인가?
항목 1-3은 환경을 최적화하고 다른 연구원의 의견을받는 것과 관련이 있으며 항목 4는 혼자하는 일입니다. 1-3의 중요성에 대한 경험적 증거로서, 소수의 연구 그룹과 기관에서 가장 큰 영향을 미치는 작업 파열이 어떻게 밀접하게 모이는 경향이 있는지 고려하십시오. 이는이 사람들이 다른 사람들보다 훨씬 똑똑하기 때문이 아니라, 더 높은 밀도의 전문 지식과 관점을 가지고 있기 때문에 나머지 커뮤니티보다 조금 앞서서 새로운 결과를내는 데 지배적입니다. 고밀도의 관련 전문 지식을 갖춘 환경에 충분히 운이 좋으면 절망하지 마십시오. 당신은 팩보다 앞서 나가기 위해 열심히 노력해야하며, 자신의 독특한 관점을 전문화하고 개발하는 것이 매우 중요합니다.
아이디어 중심 및 목표 중심 연구
대략적으로 말하면 다음에 수행 할 작업을 결정하는 방법에는 두 가지가 있습니다.
아이디어 중심. 문헌의 일부 분야를 따르십시오. X를 수행하는 방법을 보여주는 논문을 읽으면서 X를 더 잘 수행하는 방법에 대한 아이디어가 있습니다. 그런 다음 아이디어를 테스트하기 위해 프로젝트를 시작합니다.
목표 중심. 달성하고자하는 몇 가지 새로운 AI 기능에 대한 비전을 개발하고 해당 목표에보다 근접한 문제를 해결하십시오. (아래에는 3D 휴머노이드 운동에 강화 학습을 사용한다는 목표를 포함하여 본인의 연구에서 몇 가지 사례 연구를 제공합니다.) 실험에서는 문헌에서 다양한 기존 방법을 테스트 한 다음 자체 분석법을 개발합니다. 그들을 개선하십시오.
물론,이 두 가지 접근법은 상호 배타적이지 않습니다. 임의의 주어진 서브 필드 ML은 일부 목표 (예를 들어, 물체 검출)와 관련이있다. 모든“아이디어 중심”프로젝트는 서브 필드의 목표를 향한 진전을 나타내므로 어떤 의미에서는 목표 중심의 연구 사례입니다. 그러나 여기에서는 목표 중심의 연구를 통해 목표가 전체 하위 필드 목표보다 더 구체적이라는 것을 의미하며 X가 더 잘 작동하는 것보다 X 가 처음으로 작동하는 것과 비슷합니다.
나는 개인적으로 대부분의 사람들에게 목표 중심의 연구를 추천하며, 대부분이 전략을 따랐습니다.
아이디어 중심의 연구의 한 가지 주요 단점은 다른 사람들의 작업을 떠올리거나 복제 할 위험이 높다는 것입니다. 전 세계의 연구원들이 같은 문헌을 읽으며 비슷한 아이디어로 이어지고 있습니다. 아이디어 중심의 연구를 통해 획기적인 발전을 이루려면 주제에 대한 매우 깊은 이해와 다른 지역 사회와 다른 관점을 개발해야합니다.
반면에 목표 중심의 연구를 통해 목표는 다른 지역 사회와 차별화 된 관점을 제공 할 것입니다. 다른 누구도 묻지 않는 질문을하게되어 더 큰 발전을 이룰 수 있습니다. 목표 중심의 연구는 훨씬 더 동기 부여가 될 수 있습니다. 매일 아침 일어나서 목표를 달성한다고 상상할 수 있습니다. 결과가 어떻게 보이고 어떻게 느끼는지. 따라서 기복이있는 장기 실행 연구 프로그램을보다 쉽게 ​​수행 할 수 있습니다. 또한 목표는 연구팀이 협력하여 문제의 다양한 측면을 공격 할 수있게하는 반면 아이디어 중심의 연구는 1-2 명의 "팀"에 의해 가장 효과적으로 수행됩니다.
목표 중심 연구 사례 연구 : 대학원 과정에서의 나의 연구
박사 과정의 전반기 동안, 나의 목표는 로봇이 매듭을 묶는 수술 용 로봇, 옷을 접는 가정용 로봇 등 변형 가능한 물체를 조작 할 수있게하는 것이 었습니다. 이 목표는 실험실의 주요 목표 인 고문 인 Pieter Abbeel이 결정했지만이 목표를 달성하는 방법에 대한 내 의견을 개발했습니다. 본인의 접근 방식은 인간의 시연을 통한 학습에 기반을 두었습니다. PR2가 매듭을 밧줄로 묶는 문제. 여러 가지 예상치 못한 하위 문제가 발생했으며 그 중 하나는 궤도 최적화였으며, 그 하위 문제에 대한 저의 연구는 매듭 묶기 프로젝트에서 가장 영향력있는 결과물이었습니다.
박사 후반에 강화 학습에 관심을 갖게되었습니다. 강화 학습을 적용 할 수있는 많은 문제 영역이 있지만 목표가 구체적이고 최종 결과가 흥미 로웠 기 때문에 로봇 운동에 집중하기로 결정했습니다. 특히, 내 목표는 3D 로봇이 강화 학습을 사용하여 처음부터 실행하는 법을 배우는 것입니다. 초기 조사를 거친 후 이해와 수학적 분석에 가장 적합 해 보였기 때문에 정책 그라디언트 방법에 중점을두기로 결정했습니다. 이 기간 동안 TRPO와 GAE를 개발하여 3D 휴머노이드 운동의 원래 목표를 달성했습니다.
운동을하고 정책 그라디언트 방법으로 첫 번째 결과를 얻기 시작하면서 DeepMind 팀은 Atari에서 DQN을 사용하여 결과를 발표했습니다. 이 결과로 많은 사람들이 밴드 왜건을 뛰어 넘어 더 나은 Q- 러닝 버전을 개발하여 Atari 도메인에 적용하려고 시도했습니다. 그러나 이미 Q-learning을 살펴 보았고 이것이 내가 진행중인 운동 과제에 대한 좋은 접근 방법이 아니라고 결론을 내 렸습니다. 따라서 정책 그라데이션 방법을 계속 연구하여 TRPO, GAE 및 이후 PPO로 이어졌습니다. 가장 잘 알려진 작품. 이 예는 다른 커뮤니티와 다른 문제를 선택하여 다른 아이디어를 탐색하는 방법을 보여줍니다.
목표 중심 연구 : 일반 솔루션으로 자신을 제한
목표 중심 연구의 한 가지 함정은 당신의 목표를 너무 문자 그대로 받아들이고 있습니다. 특정 기능을 염두에두고 있다면 머신 러닝 분야를 발전시키지 않는 흥미로운 방법으로이를 달성 할 수있는 방법이있을 것입니다. 일반적으로 보이고 다른 문제에 적용될 수있는 솔루션으로 검색을 제한해야합니다.
예를 들어, 로봇 운동에 대한 작업을하는 동안 도메인 정보를 솔루션에 통합하는 것을 피했습니다. 목표는 시뮬레이션에서 운동 이 일반적이고 다른 문제에 적용될 수있는 방식 으로 달성하는 것이 었습니다. 나는 삶의 첫 징후를보기 위해 약간의 기능 공학과 보상을 만들었지 만 변경 사항을 단순하게 유지하고 내가 개발중인 알고리즘에 영향을 미치지 않도록주의를 기울였습니다. 이제 비디오 게임을 테스트 베드로 사용하고 있으므로 알고리즘 아이디어가이 설정에만 국한되지 않고 로봇 공학에도 동일하게 적용될 수 있습니다.
높은 목표를 설정하고 높은 목표를 향해 점차 증가
때로는 똑똑하고 열심히 일하는 사람들이 훌륭한 연구를하지 않는 경우가 있습니다. 제 생각에이 실패의 주된 이유는 중요하지 않은 문제에 대해 작업하기 때문입니다. 연구 프로젝트에 착수 할 때 스스로에게 자문을 구해야합니다. 이것이 10 % 개선 또는 10X 개선입니까? 나는 종종 연구자들이 합리적인 것처럼 보이지만 일부 지표를 약간 개선 할 수있는 프로젝트를 수행하는 것을 본다.
증분 작업 (10 % 개선)은 달성하려는 더 큰 목표와 관련하여 가장 유용합니다. 예를 들어, 컨볼 루션 신경망을 사용하는 ImageNet 분류에 대한 주요 논문 (Krizhevsky, Sutskever, & Hinton, 2012)에는 완전히 새로운 알고리즘 구성 요소가 포함되어 있지 않으며, 전례없는 결과를 달성하기 위해 많은 수의 작은 개선 사항을 쌓아 두었습니다. 당시 거의 모든 사람들에게 놀라운 일입니다 (지금 당연한 것으로 생각합니다). 일상적인 작업 중에 성능 및 이해도가 점진적으로 향상됩니다. 그러나이 작은 단계들은 비 증분 적 진보를 나타내는 더 큰 목표로 당신을 움직여야합니다.
점진적인 아이디어로 작업하는 경우 유용성은 복잡성에 따라 달라집니다. 기준선을 약간 개선하는 방법은 매우 간단합니다. 그렇지 않으면 아무도 자신을 사용하지 않아도 사용하지 않아도됩니다. 그것이 10 % 개선되면 2 줄의 코드가 더 나은 반면, 50 % 개선되면 10 줄의 코드 등을 추가 할 수 있습니다 (나는 단지 숫자를 설명하기 위해 제시합니다. 실제 숫자는 분명히 도메인에 따라 다릅니다.)
돌아가서 가장 존경하는 머신 러닝 업적 목록을보십시오. 장기 연구 계획이 이러한 성과의 수준에 도달 할 가능성이 있습니까? 당신이 자랑스럽게 여기는 길을 찾을 수 없다면, 계획을 수정하여 그 잠재력을 갖도록해야합니다.
지속적인 발전
기계 학습에서 새로운 알고리즘과 통찰력을 개발하려면 오랫동안 문제에 집중해야합니다. 이 섹션은이 장기적인 문제 해결 프로세스를위한 효과적인 습관을 개발하여 훌륭한 결과를 지속적으로 구축 할 수 있도록합니다.
노트북을 보관하고 검토하십시오
매일 아이디어와 실험을 기록 할 수있는 공책을 보관하는 것이 좋습니다. 저는 5 년의 대학원과 OpenAI에서 2 년 동안이 일을 해왔으며, 그것이 큰 도움이되었다고 생각합니다.
매일 항목을 만듭니다. 이 항목에서는 내가하고있는 일, 가지고있는 아이디어, 실험 결과 (그림과 표에 붙여 넣기)를 기록합니다. 1 주 또는 2 주마다, 나는 매일 모든 출품작을 읽고 그 정보를 요약으로 요약하는 검토를합니다. 일반적으로 제 리뷰에는 실험 결과 , 통찰력 (나, 동료 또는 내가 읽은 내용에서 나올 수 있음), 코드 진행 (구현 한 내용) 및 다음 단계 / 미래 작업에 대한 섹션이 포함됩니다. 일주일을 검토 한 후, 나는 종종 이전 주를보고 그 주에 대해 생각한 모든 것을 추적했는지 확인합니다. 또한,이 검토를하는 동안 정보를 다른 음원으로 이전하는 경우가 있습니다. (예를 들어, 저는 노트북과는 별도로 백 버너 아이디어와 프로젝트 목록을 유지합니다.)
이 노트를 유지하고 정기적 인 검토를 수행하면 어떤 가치가 있습니까?
먼저, 노트북은 아이디어가있는 즉시 아이디어를 적어두면 나중에 다시 방문 할 수 있습니다. 일주일 동안 리뷰를 통해 저널 항목을 다시 방문하면 퍼즐이 누락 된 부분을 채워서 그 당시에는 발생하지 않았습니다.
둘째, 노트북을 사용하면 실험 결과를 통합 된 장소에 유지할 수 있으므로 나중에 결과를 쉽게 찾을 수 있습니다. 예를 들어 어떤 하이퍼 파라미터가 차이를 만들 었는지에 대한 결론을 잊어 버리기 쉬우므로 기존 노트북 항목을 다시 방문하고 싶을 것입니다.
셋째, 노트북을 사용하면 시간 사용을 모니터링 할 수 있습니다. “지난 주에 어디로 갔었습니까?”라는 질문이있을 수 있으며, 공책은 그 질문에 대한 답변을 제공합니다. 처리량에 실망하고 시간 관리 작업을해야한다는 사실을 깨닫게 될 것입니다. 또한 몇 개월을 되돌아 보면서 아이디어가 너무 많이 진행되어 반 완성 된 프로젝트가 몇 개 있지만 주목할만한 결과를 얻을 수있을만큼 오랫동안이 스레드를 따르지 않았다는 것을 알 수 있습니다.
문제 전환시기
어려운 문제를 해결하려면 충분한 시간을 소비해야합니다. 그러나 경험적인 머신 러닝 연구에서는 아이디어를 충분히 시도했는지 알기가 어렵습니다. 때로는 아이디어가 작동 할 가능성이 있지만 세부 사항이 잘못되면 인생의 흔적이 보이지 않습니다. 그러나 다른 아이디어는 아무리 노력해도 실패 할 수밖에 없습니다.
내 경험상 문제를 너무 자주 전환하고 유망한 아이디어를 포기하는 것은 충분히 전환하지 않는 것보다 일반적인 실패 모드입니다. 현재 아이디어가 제대로 작동하도록하는 데 시간이 많이 걸리지 만, 또 다른 유망한 아이디어가 나오고 그 아이디어로 넘어 가고 싶을 것입니다. 당신의 아이디어가 빨리 시도하고 잠재적 인 반전이 크다면 계속 진행하십시오. 그러나 더 일반적으로, 새로운 아이디어에 대한 초기 결과는 실망 스러울 것이며, 상당한 결과를 도출하기 위해서는 더욱 지속적인 노력이 필요합니다.
경험상 몇 달 동안보고 있었던 프로젝트를 되돌아 보면 많은 막 다른 골목이 있었지만 대부분의 시간은 종이나 블로그 게시물과 같은 결과물을 산출했습니다. 당신의 시간을 되돌아 보면 확실히 실패하지는 않았지만 새로운 아이디어에 찬성하여 포기한 반 완료 프로젝트에 상당한 부분이 소비 된 것을 본다면 일관성과 추적을 위해 더 강한 노력을 기울여야합니다. 미래를 통해.
개인적으로 시도하지는 않았지만 성찰 할 때 많은 의미가있는 전략 중 하나는 일정 시간 예산을 주 업무 라인에서 벗어나는 새로운 아이디어를 시도하는 것입니다. 예를 들어, 주 프로젝트에서 주 프로젝트와 완전히 다른 무언가를 보내십시오. 이것은 일종의 엡실론 탐욕 탐사를 구성 할 것이며 지식을 넓히는 데 도움이 될 것입니다.
개인 개발
연구 여행 중 시간을 어떻게 할당하든 많은 것을 배울 수밖에 없습니다. 각 프로젝트는 새로운 과제를 제시 할 것이며 배경 자료와 기술을 익힐 수 있습니다. 그러나 개인 개발 시간을 정기적으로 따로 설정하면 장기적으로 훌륭한 일을 할 수있는 기회를 크게 향상시킬 수 있습니다. 특히 현재 프로젝트에서 작업하는 대신 ML에 대한 일반적인 지식을 향상시키기 위해 시간의 일부를 할당해야합니다. 이 시간을 할당하지 않으면 일상적인 작업에 필요한 기본 사항을 배우면 지식이 정체 될 수 있습니다. 이해하기 쉬운 편안한 방법으로 정착하기 쉽습니다.이 구역을 확장하기 위해 적극적인 노력을 기울여야 할 수도 있습니다.
ML에 대한 지식을 쌓는 주요 방법은 교과서, 논문 및 논문을 읽는 것입니다. 이러한 소스에서 알고리즘을 다시 구현합니다. 경력 초반에 교과서와 논문을 골고루 나누는 것이 좋습니다. 점진적으로 진행할 수있는 관련 교과서 및 논문 모음을 선택해야하며 좋아하는 논문에서 모델 및 알고리즘을 다시 구현해야합니다.
기계 학습의 대부분의 학생들은 학교 과정을 마친 후 교과서를 읽는 데 시간을 소비하지 않습니다. 교과서가 종이보다 지식을 흡수하는 데 훨씬 더 조밀 한 방법이기 때문에 이것이 실수라고 생각합니다. 각 회의 보고서에는 일반적으로 하나의 주요 새로운 아이디어와 함께 배우기에는 너무 간결한 배경 섹션이 포함되어 있습니다. 일반적으로 아이디어 자체보다 표기법 및 용어를 이해하는 데 더 많은 시간을 소비해야하므로 많은 오버 헤드가 있습니다. 반면에 좋은 교과서는 수십 년의 아이디어를 모아서 같은 표기법으로 올바른 순서로 제시합니다. 소개 기계 학습 교과서를 읽는 것 외에도 관심 분야의 다른 책을 읽으십시오. 내가 가장 좋아하는 것은 Nocedal & Wright의 Numerical Optimization 과 Cover & Thomas의 Elements of Information Theory였습니다 .
교과서 이외에도 본인의 연구에 관심이있는 박사 논문을 읽는 것이 좋습니다. ML의 박사 학위 논문은 일반적으로 다음과 같이 주문됩니다 : (1) 입문 및 배경 자료, (2) 회의에서 이전에 출판 된 여러 논문 (논문을 작성하기 위해 논문을 "스테이플 링"해야한다는 말) (3) 결론과 전망. 부품 (1)과 (3)은 전문가가 작성한 필드의 과거와 미래에 대한 통일 된 견해를 포함하므로 대부분의 이점을 얻을 수 있습니다. 최근 논문은 종종 활동 분야에 대한 문헌 리뷰를 찾기에 가장 좋은 곳이지만, 오래된 논문에는 종종 귀중한 통찰력이 포함되어 있습니다.
교과서와 논문은 기초 지식을 쌓는 데 유용하지만 지식을 개척하기 위해 많은 논문을 읽어야합니다. 연구 경력을 시작할 때 논문에서 아이디어를 다시 구현하고 결과를 출판 된 아이디어와 비교하는 데 많은 시간을 할애하는 것이 좋습니다. 우선, 이것은 수동적으로 읽는 것보다 주제에 대한 더 깊은 이해를 제공합니다. 둘째, 실험을 수행 한 경험이 있으며, 원래 연구를 수행하는 것보다 기존 작업 (원하는 수준의 성능이 알려진)을 다시 구현하여 훨씬 더 빠른 피드백을 얻을 수 있습니다. 최첨단 기술을 쉽게 재현 할 수 있으면 그 이상을 경험할 수 있습니다.
중요한 논문을 읽고 다시 구현하는 것 외에도, 자신의 분야에서 덜 발간되는 논문을 추적해야합니다. 들어오는 눈을 비판적으로보고 읽고 감추면 분야의 추세를 파악하는 데 도움이됩니다 (아마도 많은 논문이 새로운 기술을 사용하고 좋은 결과를 얻고 있음을 알 수 있습니다. 조사해야 할 수도 있습니다). 또한 아이디어의 의존성 그래프 (아이디어가 널리 사용되며 다른 아이디어의 문을 여는)를 관찰하여 취향을 쌓는 데 도움이됩니다.
계속해서 훌륭한 연구를하십시오!
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment