[제안서 참여]
안녕하세요 정의철 연구원입니다. 이번에는 논문 리뷰가 아닌 X-diary로 작성하게 되었습니다. 저희 다크데이터팀은 2주 동안 기초연구실 과제 제안서를 작성했습니다. 이번 기초연구실 과제에서는 신뢰가능한 대형 AI를 위한 데이터 기반 연구에 중점을 두었습니다. 이번 연구의 목표는 3차년도 계획으로 세분화되었습니다. 1차년도는 각 모달리티에 특화된 데이터 가치평가 방법론을 개발하는 것이고 2차년도는 각 Task에 특화되며 Multi-Task 상황을 고려할 수 있는 데이터 가치평가 기법을 구축하는 것. 마지막 3차년도는 대형 멀티모달-멀티태스크 상황에서의 데이터 가치평가로 확장하는 연구를 수행하는 것이였습니다. 연구 요약 이미지는 아래와 같습니다.
[진행 과정]
처음 슬랙을 통해 기초연구실 과제 제안서 작업 계획을 전달받았을 때, 설렘과 동시에 막막함을 느꼈습니다. 기초연구실 과제의 내용을 확인해보니 제게는 새로운 연구 분야에 도전할 수 있는 기회여서 기대가 되었습니다. 하지만 동시에 다양한 데이터 종류와 넓은 연구 범위에 대한 부담감이 느껴졌습니다. 여태까지 액티브러닝 관련 논문들을 읽으면서 데이터 가치평가에 대한 방법론이나 중요성에 대해서는 알고 있었지만 이번 과제에서는 이미지 데이터뿐만 아니라 텍스트 데이터, 비디오 데이터, 그래프 데이터, 음성 데이터 등 다루어 보지 못한 데이터 종류가 많았었고 유니모달뿐만 아니라 멀티 태스크, 멀티모달까지로 연구 범위가 넓어져서 처음에는 너무 막막하다는 느낌을 받았습니다. 부족한 경험과 지식으로 인해 연구를 성공적으로 수행해낼 수 있을지에 대한 걱정도 있었습니다. 하지만 이러한 걱정은 제안서가 붙은 뒤에 할 수 있었기에 현재 일에 집중하여 제안서를 잘 만드는데 집중하기로 했습니다. 그렇게 교수님이 지시해주신 일들을 역할 분담하여 진행하기 시작했습니다.
제가 맡은 연구 주제는 2차년도에 해당하는 ‘각 Task에 특화되며 Multi-Task 상황을 고려할 수 있는 데이터 가치평가 기법을 구축하는 것.’이였습니다. 따라서 멀티태스크에 대해 더 자세히 알 필요가 있었습니다. 그래서 처음에는 멀티태스크에 대한 서베이부터 먼저 시작을 했습니다.
이번 서베이는 단순히 공부를 위한 서베이가 아니라 현재 기술에 데이터 가치평가라는 개념을 적용시키기 위한 조사였기에 논문이나 블로그 글을 읽을 때에도 현재의 연구 진행사항은 어디까지이며 이 연구가 갖는 한계점이 무엇인지를 항상 생각하며 서베이를 진행하였습니다.
그렇게 서베이 진행해보니 멀티태스크에는 대표적으로 task간 gradient가 충돌하는 상황(conflicting gradient)이 발생하는 문제가 있었습니다. 저희는 이 gradient conflicting에 초점을 맞춰 앞으로의 연구 계획을 잡기로 했습니다. 그래서 이제 본격적으로 멀티태스크의 gradient conflicting 문제를 다루는 논문들을 서베이하기 시작했습니다. 먼저 기본 베이스라인이 되는 논문을 토대로 그 논문에 나와있는 핵심 키워드를 중심으로 서베이를 진행해나갔습니다. 관련된 논문을 찾았으면 처음부터 끝까지 다 읽을 시간이 없었기에 저만의 기준으로 논문을 정리하기 시작했습니다. 먼저 Abstract, Contribution, Conclusion 부분을 살펴보며 논문에서 다루는 문제가 gradient conflicting와 일치하는지, 이 문제를 해결하는 논문이 맞는지 등을 확인했고 만약 일치한다면 Method, Analysis를 살펴보며 기존 방법론과 어디에서 차이가 나는지 주목했습니다. 이후 서베이에 어느 정도 숙련도가 생겼을때는 Experiments을 보았을때 비교되는 알고리즘들을 통해서 gradient conflicting 문제를 다룬 방법론들은 무엇이 있으며 전체적인 연구의 흐름을 확인할 수 있었습니다. 추가적으로 이전까지는 최신 논문에 대한 두려움이 있었지만 오히려 최신 논문이 더 읽기 쉽다는 느낌을 받았고 최신 논문에 대한 두려움이 많이 사라진 것 같습니다.
[gradient conflicting]
이 섹션에서는 서베이를 하면서 gradient conflicting의 베이스라인으로 잡았던 논문([2020 NIPS]Gradient Surgery for Multi-Task Learning(PCGrda))에 대해 간략히 소개해볼까 합니다.
PCGrad
Multi-Task Learning(MTL)은 이전에도 설명했듯이 여러 작업을 하나의 모델로 동시에 학습시키는 방식입니다. MTL은 종종 전체적인 성능 향상을 이끌기도 하지만 각 task 관점에서 보면 Multi-Task Learning으로 학습되었을때 개별적으로 학습할 때보다 성능이 떨어지는 경우가 있습니다.
이러한 문제를 상세히 분석하고 Multi-Task Learning의 성능을 안정적으로 향상시키기 위한 다양한 연구가 진행되었습니다. 그 중 하나가 Task 간 Gradient를 조절하는 방식으로 접근하는 PCGrad라는 기법입니다. Multi-Task Learning을 수행하면 작업 간 성격이 다르기 때문에 학습 과정에서 작업 간 Gradient가 충돌하는 상황이 발생할 수 있습니다. 본 논문에서는 이러한 충돌하는 Gradient가 어떤 상황에서 문제가 되는지를 분석하였습니다. 이 분석을 기반으로 하여, Model-agnostic 한 방법으로 학습 중 Gradient를 수정하는 방법을 제안합니다. 이 방법론은 간단히 말해 작업 간 Gradient 벡터를 서로 Projection시키는 방식이라고 정리할 수 있습니다.
[example]
논문에서는 2D multi-task optimization problem을 시각화하고 각 Task 의 paramter에 따른 Loss 등고선 그래프를 시각화하는 실험을 진행합니다.
위 그림에서 진한 주황색일 수록 Loss 값이 작은 구간을 의미합니다.
위의 그림에서 특정 같은 위치(같은 paramter 값일 때)에서 각 task 가 가지는 gradient 는 위 그림에 점과 화살표로 표기하였습니다. 그래프에 나와있듯이 Task1과 Task2의 gradient가 다를 경우 두 Task가 같이 최적화 되는 곳으로 수렴을 잘 하지 못하는 문제가 발생할 수 있습니다.
위 그림에서 왼쪽은 Adam optimizer를 사용했을때 Multi-task objective의 궤적을 설명한 그림이고 오른쪽은 저자가 제안하는 방법인 PCGrad를 사용했을때 Multi-task objective의 궤적을 설명한 그림입니다. 왼쪽의 경우 Multi-task gradient는 하나의 task gradient에 의해 지배될 수 있으며 다른 작업의 성능을 저하시키는 원인이 됩니다. 결과적으로 옵티마이저는 최적화 목표를 달성하는 데 어려움을 겪습니다. 반면 저자가 제안한 방법론을 적용시키면 안정적으로 최적화가 될 수 있다는 것을 보여줍니다.
[gradient conflicting가 문제가 되는 상황 정의]
저자는 다음 세 가지 조건이 동시 발생할 때 gradient conflicting 문제가 되는 상황이라고 정의합니다.
(a) 여러 작업의 기울기가 서로 충돌할 때
(b) 기울기 크기의 차이가 커서 일부 작업 기울기가 다른 작업을 지배하게 되는 경우
(c) Multi-task 최적화 환경에 곡률(curvature)이 높은 경우.
그리고 위의 3가지 조건을 각가 재정의 합니다.
먼저 첫 번째 여러 작업의 기울기가 서로 충돌할 때는 두 task의 기울기 gi와 gj 사이의 각도 Φij를 측정하고 cos Φij < 0일 때 기울기가 충돌하는 것으로 정의합니다.
두 번째로 기울기 크기의 차이가 커서 일부 작업 기울기가 다른 작업을 지배하게 되는 경우는 두 기울기 gi와 gj 사이의 기울기 크기 유사성을 Φ(gi, gj )을 측정하는데, 두 기울기의 크기가 동일하면 이 값은 1을 갖고 기울기 크기가 점점 달라지면 이 값은 0이 됩니다.
마지막으로 세 번째 Multi-task 최적화 환경에 곡률(curvature)이 높은 경우에서는 먼저 Multi-task curvature를 H(L; θ, θ′)로 정의하고, 양의 상수 C에 대해 H(L; θ, θ’) > C인 경우 최적화 환경의 곡률이 높은 것으로 정의됩니다.
PCGrad: Project Conflicting Gradients
이제 위의 정의를 바탕으로 PCGrad의 방법론을 살펴보면
먼저 (a)의 상황처럼 기울기가 충돌하는 상황, 즉 두 기울기 사이의 각도 Φij에 대해 cos Φij < 0일 때 PCGrad를 적용시키면 (b)또는 (c)처럼 한벡터를 다른 벡터의 normal plane 으로 projection 시키게 됩니다. 만약 Task가 여러개일 경우 각 Task gradient는 는 다른 모든 Task 의 gradient에 대해 순차적으로 projection을 반복하게 됩니다. 그래서 총 N개의 Task가 있을 때 projection은 총 N*(N-1) 번 반복하게 됩니다.
참고[https://han0ahblog.tistory.com/2]
[느낀점]
이번 과제제안서를 작성하면서 주영님과 유진님의 대단함을 많이 느꼈고 저의 부족함도 많이 느꼈습니다. 저는 자기가 맡은 일을 제대로 하는 것보다 다른 사람에게 해야할 일들을 맡기고 지시하는게 더 어렵다고 생각합니다. 하지만 두 분 모두 불필요한 내용들 없이 필요한 부분만 알아보도록 지시를 해주셨기에 그저 주어진 일들에만 집중할 수 있었습니다.
제안서 작업이 끝난 뒤 저의 모습을 돌이켜 보았을때 한 가지 아쉬운 점은 제가 나서서 해야할 일들을 찾아보고 제안하는 일들을 했었어야하는데 그런 주도적인 모습들이 많이 부족하다는 생각을 했습니다. 또 관련 서베이를 하면서 느낀점은 아직도 공부할 내용들을 넘쳐난다는 것입니다. 그래도 긍정적으로 생각하는 것은 어느 정도 내가 하고 싶은 연구가 생겼을 때 어떻게 이를 해결할 수 있을지에 대한 가이드라인을 배운 것 같아 많이 도움이 되었던 것 같습니다. 이번 제안서 작업의 경험을 통해 앞으로 제가 주도적으로 제안서를 작성해야하는 상황이 온다면 지금의 사수분들만큼 혹은 더 잘하고 싶다는 목표가 생겼습니다. 앞으로 연구실 생활을 하면서 많이 배우고 정리해둬서 제 역할 해내는 연구원이 되도록 노력하겠습니다. 작업하느라 고생하신 주영,유진,재연님 모두 수고 많으셨습니다. 감사합니다!