스토리 홈

인터뷰

피드

뉴스

조회수 1261

SW회사, 어설픈 중간관리자들에게...

어느 회사를 다니는 누구라고 평가받는가요? 아니면. 누구인데 어느 회사를 다니고 있다고 평가받고 있나요?슬프지만, SW 개발자에게 회사는 그렇게 중요하지 않습니다. 정말 중요한 것은 무슨 프로젝트를 어떤 롤과 어떤 결과를 만들기 위해서 어떤 일을 하고 있느냐인 것이죠. 사실, 그것밖에 안 남아요. 정말로요...즐거운 개발을 꿈꾸는 것이 아니라, 화를 내는데 집중하거나 부하직원들을 극단으로 몰아세우는 자세를 취하고 있다면 매우 잘못된 것입니다.죄송하지만, 당신이 회사 오너의 집안사람이 아니라면 당신도 그냥 같은 노동자일 뿐입니다.부하직원이나 당신이나 같은 시간을 노동이라는 관점에서 재화와 바꾸는 똑같은 입장이죠.하지만, 슬프게도 중간관리자가 되면 '작은 권력'에 맛 들이게 되면서 부하직원이나 하청업체에게 '부당한 힘'을 가하는 경우를 자주 보게 됩니다. 특히, 대기업에 다니시는 분들의 경우에 많이 봤고요, 중소기업에서도 많이 보게 됩니다.왜? 그것을 망각하게 되는 것일까요?그리고, 그렇게 행동하는 것이 정말 회사를 위한 길이고, 당신이 담당하는 프로젝트와 서비스의 미래를 위한 것이라고 정말 생각하시나요?슬프지만... 시간이 흘러 임원도 못되고 어느 사이에 명퇴를 당하거나, 임원의 책임을 대신 총대를 맨 상태로 그 사랑하던 회사에서 떨려 저 나오는 시기가 될 것입니다. 제가 아는 대부분의 그렇게 권력과 권한을 휘두르는 사람들 대부분이 그렇게 되시더라고요.'엄청 허탈하실 것입니다'그리고, 당신 주변에서 술과 밥을 사주던 수많은 사람들이 사라질 것입니다.왜 그러냐고요? 그들은 당신이 아니라... 당신이 자리했던 그 회사의 그 자리에 있는 사람을 찾을 뿐이니까요. 당신 그 자체는 그다지 관심 없다는 것을...언제나 어떤 자리에 있더라도, 자신의 브랜드와 자신을 위한 행동을 해야 합니다.'나에게 부여된 아이덴티티를 확보해야 합니다.'나를 만들어 나가는 과정을 뿐입니다.그래서, 아무리 급하다고 하더라도, 일은 성급하게 진행하면 안 됩니다.대부분은 기본을 지켜야 하고, 정해진 시간과 정해진 규칙대로 체크하지 않게 되면 분명 엄청난 기술적 부채가 발생하게 됩니다. 특히, 소프트웨어 회사는 한 사람 한 사람의 개발자들의 역할이 중요하기 때문입니다.목표를 위해서 명확하게 구분되어야 할 요구사항과 이해관계자, 일정과 비용에 대해서 지켜야 합니다.그것을 건너뛴다는 것은 엄청난 기술적 부채를 회사와 조직에 남겨주는 것입니다.최악의 상황에 이 조직을 도망가려고 하는 결정을 하지 않으시기 바랍니다.남아있는 서비스와 소프트웨어, 부하직원들의 황망함을 만드시지 않기를 바랄 뿐입니다.그리고, 당신에게 부여된 권한과 책임은 그냥 회사의 것일 뿐입니다.당신 자신의 인격과 아무런 관계가 없다는 것을 잊지 마시기를 바랍니다.내 주변에 나와 같은 노동자들과 한마디라도 더 따뜻하게 이야기 나누시고, 그들과 같이 일을 제대로 하기 위해 고민하시기 바랍니다.회사의 오너나 경영진은 자신의 이익을 위해서 움직일 뿐이라는 것을 잊지 마시고, 그들에게 최선을 다해서 충성해봐야... 결국, 그들에게도 당신은 일개 노동자일 뿐이랍니다.과잉 충성하면서 부하직원들에게 무능하다고 평가받지 않기를 기원드립니다.언제나 당신의 웃는 모습과 부하직원의 이야기를 잘 들으려 하는 모습을 보면서부하직원들은 당신을 존중하고 존경할 것입니다.우리는 그냥 같은 노동자일 뿐이에요. ~.~
조회수 2914

삼분의일 매트리스 냄새 이야기

삼분의일 매트리스 제품 개발 초기부터 품질만큼 신경 썼던 것은 바로 냄새였다. 유명한 템퍼도 냄새 때문에 고객들과의 잡음이 끊이지 않았기 때문이다. (참조 : http://news1.kr/articles/?2737094)삼분의일은 업계 최초로 폴리우레탄 냄새를 잡을 수 있는 설비와 공정을 추가했다. 이거 때문에 정식 출시가 2달이나 늦춰졌다. '아직' 유명 브랜드도 아니고, 이제 '막' 시작한 삼분의일 입장에서는 엄청난 투자를 했다.(삼분의일 공정 소개 : https://www.youtube.com/watch?v=8deepSEXGqo&feature=youtu.be ) 모두들 미쳤다고 했지만, 결과적으로 경쟁사들에 비해서 냄새 관련 컴플레인을 90% 넘게 줄일 수 있었다. 그런데 날씨가 굉장히 추워진 2018년 12월 어느 날부터 냄새 관련 컴플레인이 급속도로 증가하기 시작했다. 너무 갑작스러워서 삼분의일 CS팀은 멘붕에 빠졌다. 하지만 우리가 할 수 있는 일은 해결책을 찾아 제공해드리는 것이었다. 문제가 발생한 고객님들의 제품은 우선 빠르게 회사 비용을 들여서 회수했다. 그리고 나는 매일 공장으로 출근해서 왜 같은 공정을 거쳤는데 냄새가 나는지, 원인을 파악하는데 총력을 기울였다. 1주일이 지나서야 원인을 찾을 수 있었다. 범인은 추위였다. 갑자기 한파가 닥치면서 작업장 내부 온도가 영하 밑으로 내려갔고 이로 인한 문제가 발생한 것이다. 방금 발포를 끝낸 폼의 내부 온도는 180도이고, 이를 둘러싸고 있는 외부 공기 온도가 영하게 가까울 때 문제가 발생한다. 추운 공기는 무겁고 밀도가 높다. 따듯한 공기는 가볍고 밀도가 낮기 때문이다.작업장 내부 온도가 영상이라면 공기의 밀도가 높지 않아서 내부에 쌓여있던 냄새 분자들이 스멀스멀 폼 외부로 빠져나온다. 그리고 어느 정도 빠져나온 이후에 전용 탈취기를 통해서 잔류 냄새를 말끔하게 제거할 수 있다.하지만 작업장 내부 온도가 영하라면 폼을 둘러싸고 있는 외부 공기 온도가 너무 낮고 밀도가 높아서 폼 내부에 있는 냄새 분자들이 외부로 빠져나오지 못하는 상황이 발생한다. 이 상태로 탈취기를 돌려도 예전만큼 탈취가 되지 않는다. 그리고 고객님의 집에 도착해서 외부 온도가 따듯해지면 그때부터 내부에 숨어 있던 냄새 분자들이 스멀스멀 나오기 시작하면서 고객님들의 컴플레인이 일어난 것이다. 이제 원인을 알았으니 재발 방지를 위한 프로세스를 구축해야 했다. 한파가 닥쳐도 작업장 내부 온도가 영하로 떨어지지 않도록 비닐 보온막을 꼼꼼하게 설치했다. 그리고 탈취기를 폼이 통과하는 속도를 2배 늦추고, 반복하는 횟수를 두배로 늘렸다. 문제는 해결했지만, 12월 물량이 크게 늘면서, 이미 출고된 제품들의 컴플레인은 한 달 동안 계속되었다. 접수된 불만 건은 한 건 한 건 사과드리고 가장 빠른 시일 내에 완벽한 제품으로 교환해 드렸다. 변명보다 모든 상황을 솔직하게 말씀드리고, 진심을 담은 사과와 해결책을 제안해 드리려고 노력했다. 대부분의 고객님들이 감사하게도 넓은 아량으로 삼분의일을 이해해주셨다. 삼분의일 매트리스가 출시되고 첫 번째 겨울에 우리는 소중한 경험을 했다. 이사일이 맞물려서 방바닥에서 며칠을 주무시면서도 더 좋은 제품을 만들어 달라고 응원해주신 고객님들이 자랑스럽게 우리 제품을 가장 소중한 사람들에게 추천할 수 있도록 앞으로도 제품 개선, 개발에 더 박차를 가하기로 했다. 결국 단순한 진리를 다시 마주하게 되었다. 최고의 제품을 만들고, 진심을 다해서 고객을 대하자. 이제 냄새 걱정하지 마세요.http://bit.ly/coldsmellby 삼분의일 대표전주훈#삼분의일 #매트리스 #문제해결 #인사이트
조회수 3049

챗봇과 인공지능 머신러닝 ㅡ Part 1/2

스타워즈를 보신 분이라면 거기에 나오는 난쟁이 로봇 R2D2와 키다리 로봇 C3P0를 아실 것이다. 친근한 R2D2는 전자음을 조정해 인간과 대화를 하며 주로 말 잘하고 박식한 로봇인 C3P0가 통역을 해준다.이런 충실하면서 똑똑한 친구들이 옆에서 항상 나를 도와준다면 어떨까? 정말 좋을 것이다. 만약 매일 보는 스마트폰 안에서도 나의 질문에 답해주는 이런 고마운 친구들이 있다면 얼마나 좋을까? 이런 저런 생각을 하다보면 우리는 대화형 로봇의 필요성을 느낀다.챗봇(Chatbot)이란?챗봇의 정의는 “대화형 인터페이스 상에서 규칙 또는 지능으로 유저와 소통하는 서비스”이다. 이 말을 하나하나 풀어보자.먼저, 대화형 인터페이스란 뭐지? 어렵다. 쉽게 설명해 보자. 인터페이스는 사람과 컴퓨터를 연결하는 장치라고 한다. 역시 어렵다. 아! 그냥 스마트폰 앱으로 보면 된다. 그럼 소통한다는 말은 대화한다는 것이므로 스마트폰 앱에서 일방향이 아닌 양방향이 가능하다는 얘기다. 어! 이상하다. 양방향이라면 나의 말에 응대하는 로봇은 뭐로 움직이는 거지? 궁금하다. 누가 일정한 규칙으로 만들어 논건지 아니면 우리처럼 지능이 있는 건지. 지능이 있다면 그런 지능은 뭐지? 점차 우리는 자연스럽게 인공지능에 다가간다.인공지능(Artificial Intelligence)이라는 용어는 1956년 미국 다트머스의 한 학회에서 존 매카시가 처음 사용했다고 한다. 원래 인공지능은 소프트웨어인 정신을 말하고 로봇은 하드웨어인 육체를 말하는 것이지만 정신없이 육체가 존재할 수 없는 것처럼 로봇을 얘기하면 당연히 인공지능은 따라간다.학자들은 인공지능을 강(强)인공지능과 약(弱)인공지능으로 구분한다. 간단히 얘기하면 강인공지능이란 자의식이 있는 인간에 가까운 지능이고 약인공지능은 자의식이 없다. 자아가 없으며, 명령받은 일만을 수행한다. IBM의 왓슨(Watson), 작년에 인공지능의 붐을 가져온 구글의 알파고(Alpha-GO) 등은 모두 약인공지능이다. 이런 인공지능을 구현하는 기술은 무엇인가? 바로 기계한테 학습을 시키는 머신러닝(Machine Learning)이다.1959년 아서 사무엘은 머신러닝을 "기계가 일일이 코드로 명시하지 않은 동작을 데이터로 부터 학습하여 실행할 수 있도록 하는 알고리즘을 개발하는 연구 분야"라고 정의했다. 여기서 학습이란, 입력 값을 받아 결과 값을 내는 모델을 만드는 표현과 표현을 통해 주어진 업무가 얼마나 잘 수행됐는지 알아보는 평가, 그리고 평가에서 설정한 기준을 찾는 최적화로 구성된 일련의 과정을 말한다. 중요한건 우리가 시키지 않은 일도 학습에 의해 자율적으로 처리한다는 것이다. 정말 신기하지 않은가?이제 챗봇이 뭔지 감이 잡힌다. 스마트폰 앱상에 존재하는 로봇인데, 물론 육체는 화면의 아이콘으로 밖엔 안보이지만 인공지능을 가지고 머신러닝에 의해 동작을 하면서 우리와 대화를 하는 그분. 그렇다면 이제 남은 건 이분의 지능이 어느 정도인지 또 얼마나 일을 잘하는 지로 판가름 난다.우리는 평생 공부를 한다. 이제는 학교를 졸업하고 나서도 항상 배워야 한다. 학습이 없다면 지능도 없다. 학습은 일일이 지도받는 지도학습과 알아서 공부하는 자율학습이 있다. 알아서 공부하려면 먼저 머리에 지식이 많아야 한다. 역시 기계도 사람과 비슷하게 배운다.  다음시간엔 챗봇에게 학습을 시켜 지능을 가지게 하는 방법에 대해 알아본다.> Part 2에서 계속
조회수 648

핵심만 말하는 능력

분야를 막론하고진정한 고수들은 공통점을 가지고 있다.무엇이 본질인지 알고 있다중고등학교 시절에어렵고 이해하기 어려운 책들을 접하면나의 지적 능력이 형편 없구나라며 자책했던 적이 많았다.도무지 넘어가지 않는 책장을 보며읽어도 읽어도 이해가 가지 않는 문장들과명확하지 않은 개념들이 나의 탓인줄만 알았다.고등학교 때 만난 수학 선생님과대학때 만난 타이포그래피 교수님은내겐 신선한 충격이었다.수학의 원리를 그렇게 쉽게 이해시킬 수 있다는 것,동일한 문제를 전혀 다르게 바라볼 수 있게 해준 분이셨고,타이포 교수님은 디자인의 감각적인 영역을 이성적으로공감할 수 있게 해준 분이셨다.그렇게 한참이 지나서현학적인 말이나 글이 보여주는 난해함과 모호함은어설픈 자들의 알량한 지식을 그럴듯하게 표현하려는위장전술일 수도 있겠다는 생각을 대학원 논문을쓰면서 뼈져리게 느끼게 되었다.어렵게, 대단한 척, 전문 용어를 난발하며 풀어낸,논문들이 말하고자 하는 내용은딱 한가지였다.어때? 나 전문가 같지?내가 찾아본 수 많은 논문들에는전달하려는 핵심이 명확한 논문은 정말 소수에 불과했다.논문의 형식을 따를 뿐 짜집기로 범벅된 거품 투성이였다.그 후로 난 논문 쓰기를 그만두었다.직장에서도 이런 일은 비일비재하다.말만 그럴듯이 얘기하면서 핵심이 없는 사람들,자기 생각은 없고 남의 얘기만 자기 것처럼 하는 사람들,장황하게 얘기하지만 요점이 없는 사람들...보고서가 30장이 넘어도무엇을 얘기하는지 전달이 안되는 자료들,사례와 근거는 넘치지만 결론을 이끌어내지 못하는 문서들,손에 잡히지 않는 모호한 개념의 형용사만 늘어놓는있어빌리티 문장들...뭘 얘기하고 싶은 건가요?이런 보고서들은 거품을 빼고 걷어내면결국 남는게 별로 없다.보통 이런 자료들이 남발하는 이유는자신이 무엇을 위해 일하는지 이해하지 못한채습관적으로 일하거나, 형식에만 맞춰서 칸 채우기식으로일하기 때문이다.또는 말하고 싶은 내용은 있지만이것을 단어와 문장으로 풀어내지 못하는 기술이부족하기 때문이다.아래 3가지를 유념하면 도움이 될지 모르겠다.1. 문서의 목적을 다시 생각하라. - 무엇을 위해 이 보고서(문장)을 쓰는가?2. 중2 학생도 이해할 수 있게 하라 - 전문지식이 없어도 이해할 수 있는 명확한 표현인가?3. 다르게 해석될 표현은 없는가? - 보는 사람에 따라 전혀 다르게 이해될 단어는 없는가?무엇보다 중요한건작성자 중심이 아니라, 그 말과 글을 전달할 대상을중심으로 정리되어야 한다는 것이다.남의 입장에서 생각해보는 것이결국은  핵심이다.그것만으로도 대단한 일이다!
조회수 1403

에이스프로젝트 리더십토론

에이스프로젝트는 함께 고민하면서 다양한 방안을 찾는 토론 제도가 많은데요. 앞서 얘기했던 운영위원회, 타운홀 미팅, 말하는 로댕 등이 대표적인 사례입니다.자세한 내용은 [에이스문화] 메뉴에 있답니다 :)이것 말고도 또 있는데요! 바로 ‘리더십 토론’입니다. ‘리더십 토론’은 말 그대로 리더들이 모여서 토론을 하는 문화인데요. 모든 리더가 다 같이 모여서 더 나은 근무환경이나 조직문화를 만들기 위한 논의를 하기도 하기도 하지만 주로 세분화된 리딩 역할 별*로 모여 리더십 토론을 진행합니다.*에이스프로젝트에는 어떤 역할이 있을까? https://blog.naver.com/aceproject/221120418503팀에는 팀 디렉터, 팀 매니저가 있고프로젝트에는 PD, 일정을 관리하는 스크럼 마스터가 있는데요.각 역할끼리 모여서 리더십 토론을 해요!팀 디렉터만 모여서 토론을 하는 날도 있고, PD와 스크럼 마스터가 함께 모여서 얘기하는 날도 있지요.각 역할별로 해당되는 이슈가 있을 때마다 비정기적으로 열려요.  리더십 토론에서는 리더들이 각자 역할을 더 잘 수행하기 위한 노하우를 공유합니다.리딩을 하면서 생긴 고민을 함께 나누고 해결 방법을 모색합니다. 역할에 맞는 리딩을 하기 위한 좋은 방법이 무엇인지, 어떤 부분을 개선하고 발전시켜야 하는지, 그동안 놓친 부분은 없는지 등에 대해 논의하면서 지속적으로 전문성을 업그레이드하는 자리라고 볼 수 있습니다.모두가 알 수 있게 안내도 해요!지금까지 역할별로 다양한 주제들과 함께 했습니다. 평가 방식, 면담 노하우도 공유하고요. 팀원의 일과 삶의 균형을 위해서 더 나은 일 하는 방식에 대해서도 함께 얘기해 보았어요.그동한 했던 많은 토론주제들!이번 리더십 토론은 팀 매니저와 함께 조직문화 키워드 설문 조사에 대한 리뷰였습니다. 리더십 토론은 한 시간 정도 진행되며 격렬한 논쟁과 토론이 벌어지죠. 매우 진지. 엄근진.리더십 토론이 끝나고 나면 회의록은 전사 공유 되어 리더십 토론에 들어오지 않았던 사람들도 내용을 알 수 있고 피드백도 언제든 줄 수 있습니다!
조회수 903

Real value of APM by JenniferSoft (1)

Hyun-chul, Lee, Chief Strategy Officer | JennifersoftFrom “a good product if you have one,” to “must have one”While the type of internet service became varied in the early 2000s, one area was sharply on the rise. It was called APM. (Application Performance Management) The APM was getting attention particularly from finance and IT industry.A foreign-based vendor introduced the APM for the first time in Korea. During the early 2000s, a global vendor such as Wylie and Veritas got much attention for its technology, however, local solution including JENNIFER soon took the lead on the market. While imported solutions were relatively heavy to use and were focusing on analytic features, JENNIFER emphasized its mission-critical features with real-time performance analysis. JENNIFER started taking the lead by responding to picky local clients. With its strengths, JENNIFER is well recognized in Japan and China. Its APM slightly appeals to Asian market.The outlook on APM market was not always optimistic back then. Although there are slight differences by market research firms, it was expected that the APM market would reach saturation point in 2010, and its market size would remain rather than increasing. Because it was expected that only a certain industry would feel the need to monitor and control the performance of application. Namely, APM was recognized as ‘a good product if you have one.’Unlike the previous forecast, the APM market has continued to grow up. According to Korea IDC research, the market has increased every year since 2010. Gartner estimated that the market size of APM would be recorded at $2.6 billion in 2014, increasing 15.8% compared with the year of 2013. Such increasing rate was the highest growth rate in ITOM (IT operations management) area.The APM market is expected to grow further down the road. What is really going on? Why more companies would like to adopt the monitoring solution, which was recognized as ‘a good product if you have one.’ How APM became ‘must have one product?’ Given companies are tightening their budget due to economic downturn, it is difficult to understand their behavior.Why do you need to invest on APM during the economic downturn?The web service was mainly used in internal system. However, as the web service has been widely used in almost every area of business, it becomes much important. As a result, investing APM has been on the rise. Ironically, APM market continues to increase not only in Korea, but across the globe over the past couple of years even after the global financial crisis broke out. Let’s find out reasons behind such decision.Stable operation under complicated IT environmentAs IT environment becomes much complicated, more companies started adopting the APM. Especially, finance firms took the lead during the initial stage of APM market. Companies in general started adopting or expanding IT infrastructure as a way of getting competitiveness. As IT environment became complicated, companies having multiple systems felt difficult to control their systems.These trend influenced on APM industry in general. These days, APM is required to couple with multiple systems running web applications, program elements in order to secure stability due to complicated IT environment. Accordingly, it became important to work with various system platform such as OS, Web Application Server, DB, and numerous application framework without causing errors. For this reason, a software that its stability and compatibility has already been proved under client’s OS is getting recognized on the market. The need for APM started expanding from companies vulnerable to system errors.Response to change triggered by mobile, and cloudTechnical advent including mobile, cloud plays a huge part in expanding APM industry. The advent of various mobile devices and internet usage regardless of time or place triggered unprecedented change in terms of types and numbers of transaction. The cloud allows users to expand their system in response to sudden increase of transaction. Such change makes companies control more service and requests seamlessly. Namely, there is a growing need to adopt the APM. Given the expansion of mobile and cloud is related with technical issue, it is likely to influence on the growth of APM for a long time.High rates of return on your investmentWhen financial crisis hit the global economy in the year of 2008, APM market was ironically on the rise. It was clear that investing on APM is beneficial. By monitoring the performance of web application server located between the client and server (company infrastructure), users are able to measure the performance of all the requests by their clients. In other words, if a company adopts the APM, it will be able to identify all the issues related with using web service. Ultimately, the company can enhance the stability of its core business.Moreover, APM help minimize the need for managing IT infrastructure and related cost. When the number of IT service increases, accompanying tasks including the management of server, application and network are inevitably increasing. However, the number of human resources or other resources remains as it is or decreases.APM help effectively monitor the operating system with a limited manpower, allowing companies to respond in a timely manner. Although APM needs to be built with convenience of management and maintenance in mind. It is important to note that adopting the monitoring solution to control could lead to increase of workload.Improved response time in related departmentCompanies these days heavily depend on IT service throughout their overall business. They keep their eyes on the status of IT service in various sectors such as sales, accounting, marketing, and customer service. APM allows both a person in charge of IT and other departments to check the status of their system and service. For instance, responding to an error by a call center employee would lead to differentiated service in terms of customer service, rather than only by IT department. To utilize APM on the ground, it must be initiated in real-time and needs to include visualization, and must be easy to use.To be continued...
조회수 1415

대시보드 만들다 문득,

 고수의 프레젠테이션은 늘 심플하다. 읽기 좋은 보고서는 한 페이지로 요약된다. 가진 정보가 많다는 건 좋은 일이지만 때론 감당할 수 없는 양에 압도 당하고 교란 당한다. 정보는 권력이 된다. 그것의 불균형은 누군가에겐 돈을 벌어다 주고 누군가에겐 좋은 일자리를 준다. 정보가 있는 곳엔 그래서 늘 사람과 힘이 몰린다. 하여, 정보제공자에겐 막중한 책임역시 따라야 한다 생각한다. 제공할 정보가 사실에 기반해야 하는 건 물론이고 더 중요한 건 진정 필요한 콤팩트(compact)한 정보만을 제공해야 한다는 것이다. 현재진행형인 대시보드(dashboard) 프로젝트 과정에서 위와 같은 생각이 들었다. 그러면, 주관과 사욕을 완전히 배제하고, 내가 드러내고 보여주고 싶은 정보가 아니라 최대한 많은 이에게 가치롭게 활용되는 정보는 어떤 형태여야 할까? 스스로 답을 내렸다.  우선 사람별, 상황별로 다른 관점과 해석이 양립할 수 없는 요소로 구성돼야 하고, 전달과정에서 요구되는 추가적 배경지식은 불필요해야 하며 필요하다면 극히 적은 양이어야 한다. 무엇보다 관련된 이는 누구나 궁금해 해야 할 것이어야 하고 부차적인 것을 제외한 본질만을 담고 있어야 한다. 이 같은 정보를 핵심정보라고 정의하면 핵심정보는 각각의 업이 가진 '본질적 성장 방정식(fundmetal growth equation)'과 연관이 깊다. 본질적 성장 방정식이란 현 시점에서 비즈니스의 성장을 추진하는 모든 핵심요소, 즉 핵심적인 성장 지렛대를 표현한 간단한 공식을 뜻한다. 제아무리 시가총액 1조를 넘은 기업일지라도 그들의 성장공식을 대여섯 가지의 핵심요소로 도식화하는 것은 가능하며 그것은 제품, 서비스가 가진 성격별로 달라진다. 본질적 성장 방정식을 <진화된 마케팅 그로스 해킹>이란 책에서 나온 사례를 인용해 예시를 들면 아래와 같다.# 이베이의 방정식{아이템을 등록한 판매자의 수}x{등록된 아이템의 수}x{구매자의 수}x{성공적인 거래의 수}=총 매출 성장# 어느 온라인 뉴스사이트의 방정식{웹사이트 트래픽}x{이메일 전환율}x{활성 사용자 비율}x{유료구독으로의 전환율}+다시 찾은 구독자 =총 구독자 매출 성장 이베이의 방정식을 보면 트래픽 양보다는, 거래량을 일정수준 이상 유지하는 것이 성장에 있어 더 중요한 미션일 것이다. 그래서 신규 셀러와 동시에 판매 아이템에 대한 공급이 지속적으로 원활히 이뤄져야만 한다. 아울러 매일, 매주 등록되는 아이템 개수와 그것의 품질, 카테고리 같은 것도 광장히 중요한 관리요소 중 하나일 것이다. 한편, 어느 온라인 뉴스사이트의 경우 트래픽의 양은 광고매출과 직결되고 신규 독자 확보의 가능성을 높여주는 성과의 선행지표다. 뉴스레터 이메일은 수신자를 이후 결제 - 유료구독 -할 확률이 높은 활성 사용자로 전환시키는 데 주력할 것이다. 그래서 사이트를 드나드는 빈도가 높은 활성 사용자층을 얼마나 두껍게 유지하느냐는 온라인 뉴스 비즈니스에서 관건 중 하나일 것이다.  참고: https://www.youtube.com/watch?v=PvSW0ri7AEg기본적인 매출 성장 방정식을 소개하는 강의 동영상이 있어 첨부한다 이처럼 본질적 성장 방정식을 구성하는 요소를 해부해보면 어떤 정보가 현 시점에 우리의 비즈니스를 이끄는 핵심정보이고, 비교적 불필요한 정보인지, 잘 드러난다. 또한, 생각한 것보다 관리해야 할, 혹은 제공해야 할 정보가 적다는 것에 놀란다 - 개인적으론 충격이었다.  페이스북 광고 관리자 페이지에서 관찰할 수 있는 데이터 필드 수는 맞춤설정 활용 시 약 300개까지 지원된다. 그들 중 절반은 서비스와 관련성이 적거나 매일 추적한다 해도 당장의 마케팅 관련 의사결정에 도움을 주지 못하는 것이 대부분일 수 있다. 구글애널리틱스에서 제공하는 지표 또한 마찬가지다. 이탈률을 체크하는 것이 중요하다고들 하지만, 서비스의 태생적 특성 상, 신규 사용자 유치를 위해 지속적이고 공격적인 온라인 광고가 불가피하다면? 때론 업계 평균보다 높은 이탈률이 당연한 것이고 그것이 가진 시사점은 적을 수도 있다. 단지 '쿨'해 보이는 지표를 관찰할 게 아니라 각각의 비즈니스 '실정'에 맞는 성장 방정식을 꾸리고 그것을 지켜 보는 게 중요하단 말이다. 결론적으로 다시 대시보드 이야기로 돌아가면, 정보판으로써 구실하기 위한 최소요건으로 대시보드에는 성장 방정식을 이루는 구성요소만 들어있으면 된다. 그것들이 최소요건이자 거의 대부분이다. 그 외 정보는 실제로는 불필요하거나 수요가 낮은 정보일 가능성이 높다. 물론 그런 정보는 필요에 따라 '드릴 다운' 방식으로 제공하는 것도 좋겠다. 하지만 당장의 우선순위는 아니란 것이다. 대시보드의 첫인상은 고수의 피티처럼 심플하고, 잘 짜여진 보고서 앞 한 장 요약본처럼 말하는 바가 적확해야 한다.블랭크 코퍼레이션의 CI내밀한 이야기가 될 수 있는데, 대시보드 프로젝트를 진행하며 자사 비즈니스의 본질적 성장 방정식은 어떻게 생겼을까, 혼자 그려봤다. 디지털 마케팅  중심적 사고이기 때문에 주관적이며 생각차는 있을 수 있다. 그리고 미래의 가변적 환경을 반영하지 않았다. 어차피 대시보드에선 미래를 projection하지 않기 때문이다.# (현 시점 기준) blank의 방정식{상품기획력}x{콘텐츠 파워}x{SNS 광고비}x{광고유입후 0일-1일내 구매하는 이의 비율}x{재구매율}x{고객생애가치}= 성장의 크기 방정식 안에 bold체로 표시된 요소를 살펴보자. 내가 생각하는 - 공식적인 내용이 아니다 - 우리의 모델 안에서 {SNS 광고비}는 성장(매출)의 크기를 좌우하는 핵심인자다. 광고를 통해 설득 당한 잠재고객을 단번에 구매로 이끌 수 있는 흡인력 - 앞선 방정식에선 {광고유입후 0일-1일내에 구매하는 이의 비율}로 표시했다 - 을 지속하느냐 또한 DR(direct response ; 직접 반응) 마케팅에서 관찰하고 관리해야 할 주요요소다. 이후 구매자의 {재구매율}과 {생애가치}도 이해하고 관리할 수 있다면 완벽할 것이다. 하지만 해당 지표의 정의와 계산은 마냥 쉽지 않기에 정밀한 설정 안에서 관련 정보의 해상도를 높이는 일이 요구된다. 이 정도의 정보가 현 시점에서 마케팅 유닛에서 필수적으로 관찰하고, 유관부서에 공유해야 할 핵심지표가 될 수 있을 것이다. 대시보드 상에 CTR(클릭률), CPC(클릭당비용), CPM(1,000회 노출당비용)과 같은 매일의 광고지표를 넣었다간 보는 이로 하여금 복잡성만 가중시킬 뿐이다. 전자상거래 마케팅 과정에서 오직 알아야 할 정보는 "광고비를 얼마나 효율적으로 투자해 얼마를 벌었는가"라고 생각한다. 현재 페이스북이 제공하는 구매 최적화 광고의 알고리듬 상에선 구매 수와 CPA(액션당비용, 구매당비용) 외 다른 지표들은 그때그때 알고리듬 컨디션에 따라 결정되는 후행지표이자 수단일 뿐이다 - 이 부분은 나중에 기회가 있다면 더 설명해보고 싶고 다른 이와 토의하고 싶다. 불과 얼마 전까지 - 아니면 지금까지; - 난 아마도, 엑셀 시트에 피봇테이블을 덕지덕지 붙여넣고 형형색색으로 트렌드를 표시하면 좋은 정보가 되는 줄 착각했었다. 그리고 난 데이터분석가도 아니고 고급통계지식이 풍부한 편도 아니다. 프로그래밍을 할 줄 알아 데이터 처리기술이 남다른가? 고작 엑셀 단축키와 기본 함수를 사용해 평균보단 빠르게 잔머릴 굴리는 정도다. 하지만 최근에는 시각화, 데이터분석, 고급통계지식 모두 중요한 정보를 전달하는 수단일 뿐이란 생각이 든다. 자기위로적 감상일 수 있지만, 정말로, 정보를 다루는 데 있어 그러한 스킬보다 중요한 건 진정 필요한 정보를 옥석 가리듯 가려내는 정보 분별력이라고 생각한다. 수단에 현혹돼 정작 알맹이는 없고, 누구에게도 도움되지 않는 보고서를 만드는 일이 어떤 마케터, 사업PM에게도 없었으면 하는 바람이다.(끝)Jin Young Choi회사원
조회수 3242

Attention is all you need paper 뽀개기

이번 포스팅에서는 포자랩스에서 핵심적으로 쓰고 있는 모델인 transformer의 논문을 요약하면서 추가적인 기법들도 설명드리겠습니다.Why?Long-term dependency problemsequence data를 처리하기 위해 이전까지 많이 쓰이던 model은 recurrent model이었습니다. recurrent model은 t번째에 대한 output을 만들기 위해, t번째 input과 t-1번째 hidden state를 이용했습니다. 이렇게 한다면 자연스럽게 문장의 순차적인 특성이 유지됩니다. 문장을 쓸 때 뒤의 단어부터 쓰지 않고 처음부터 차례차례 쓰는 것과 마찬가지인것입니다.하지만 recurrent model의 경우 많은 개선점이 있었음에도 long-term dependency에 취약하다는 단점이 있었습니다. 예를 들어, “저는 언어학을 좋아하고, 인공지능중에서도 딥러닝을 배우고 있고 자연어 처리에 관심이 많습니다.”라는 문장을 만드는 게 model의 task라고 해봅시다. 이때 ‘자연어’라는 단어를 만드는데 ‘언어학’이라는 단어는 중요한 단서입니다.그러나, 두 단어 사이의 거리가 가깝지 않으므로 model은 앞의 ‘언어학’이라는 단어를 이용해 자연어’라는 단어를 만들지 못하고, 언어학 보다 가까운 단어인 ‘딥러닝’을 보고 ‘이미지’를 만들 수도 있는 거죠. 이처럼, 어떤 정보와 다른 정보 사이의 거리가 멀 때 해당 정보를 이용하지 못하는 것이 long-term dependency problem입니다.recurrent model은 순차적인 특성이 유지되는 뛰어난 장점이 있었음에도, long-term dependency problem이라는 단점을 가지고 있었습니다.이와 달리 transformer는 recurrence를 사용하지 않고 대신 attention mechanism만을 사용해 input과 output의 dependency를 포착해냈습니다.Parallelizationrecurrent model은 학습 시, t번째 hidden state를 얻기 위해서 t-1번째 hidden state가 필요했습니다. 즉, 순서대로 계산될 필요가 있었습니다. 그래서 병렬 처리를 할 수 없었고 계산 속도가 느렸습니다.하지만 transformer에서는 학습 시 encoder에서는 각각의 position에 대해, 즉 각각의 단어에 대해 attention을 해주기만 하고, decoder에서는 masking 기법을 이용해 병렬 처리가 가능하게 됩니다. (masking이 어떤 것인지는 이후에 설명해 드리겠습니다)Model ArchitectureEncoder and Decoder structureencoder는 input sequence (x1,...,xn)<math>(x1,...,xn)</math>에 대해 다른 representation인 z=(z1,...,zn)<math>z=(z1,...,zn)</math>으로 바꿔줍니다.decoder는 z를 받아, output sequence (y1,...,yn)<math>(y1,...,yn)</math>를 하나씩 만들어냅니다.각각의 step에서 다음 symbol을 만들 때 이전에 만들어진 output(symbol)을 이용합니다. 예를 들어, “저는 사람입니다.”라는 문장에서 ‘사람입니다’를 만들 때, ‘저는’이라는 symbol을 이용하는 거죠. 이런 특성을 auto-regressive 하다고 합니다.Encoder and Decoder stacksEncoderN개의 동일한 layer로 구성돼 있습니다. input $x$가 첫 번째 layer에 들어가게 되고, layer(x)<math>layer(x)</math>가 다시 layer에 들어가는 식입니다.그리고 각각의 layer는 두 개의 sub-layer, multi-head self-attention mechanism과 position-wise fully connected feed-forward network를 가지고 있습니다.이때 두 개의 sub-layer에 residual connection을 이용합니다. residual connection은 input을 output으로 그대로 전달하는 것을 말합니다. 이때 sub-layer의 output dimension을 embedding dimension과 맞춰줍니다. x+Sublayer(x)<math>x+Sublayer(x)</math>를 하기 위해서, 즉 residual connection을 하기 위해서는 두 값의 차원을 맞춰줄 필요가 있습니다. 그 후에 layer normalization을 적용합니다.Decoder역시 N개의 동일한 layer로 이루어져 있습니다.encoder와 달리 encoder의 결과에 multi-head attention을 수행할 sub-layer를 추가합니다.마찬가지로 sub-layer에 residual connection을 사용한 뒤, layer normalization을 해줍니다.decoder에서는 encoder와 달리 순차적으로 결과를 만들어내야 하기 때문에, self-attention을 변형합니다. 바로 masking을 해주는 것이죠. masking을 통해, position i<math>i</math> 보다 이후에 있는 position에 attention을 주지 못하게 합니다. 즉, position i<math>i</math>에 대한 예측은 미리 알고 있는 output들에만 의존을 하는 것입니다.위의 예시를 보면, a를 예측할 때는 a이후에 있는 b,c에는 attention이 주어지지 않는 것입니다. 그리고 b를 예측할 때는 b이전에 있는 a만 attention이 주어질 수 있고 이후에 있는 c는 attention이 주어지지 않는 것이죠.Embeddings and Softmaxembedding 값을 고정시키지 않고, 학습을 하면서 embedding값이 변경되는 learned embedding을 사용했습니다. 이때 input과 output은 같은 embedding layer를 사용합니다.또한 decoder output을 다음 token의 확률로 바꾸기 위해 learned linear transformation과 softmax function을 사용했습니다. learned linear transformation을 사용했다는 것은 decoder output에 weight matrix W<math>W</math>를 곱해주는데, 이때 W<math>W</math>가 학습된다는 것입니다.Attentionattention은 단어의 의미처럼 특정 정보에 좀 더 주의를 기울이는 것입니다.예를 들어 model이 수행해야 하는 task가 번역이라고 해봅시다. source는 영어이고 target은 한국어입니다. “Hi, my name is poza.”라는 문장과 대응되는 “안녕, 내 이름은 포자야.”라는 문장이 있습니다. model이 이름은이라는 token을 decode할 때, source에서 가장 중요한 것은 name입니다.그렇다면, source의 모든 token이 비슷한 중요도를 갖기 보다는 name이 더 큰 중요도를 가지면 되겠죠. 이때, 더 큰 중요도를 갖게 만드는 방법이 바로 attention입니다.Scaled Dot-Product Attention해당 논문의 attention을 Scaled Dot-Product Attention이라고 부릅니다. 수식을 살펴보면 이렇게 부르는 이유를 알 수 있습니다.Attention(Q,K,V)=softmax(QKT√dk)V<math>Attention(Q,K,V)=softmax(QKTdk)V</math>먼저 input은 dk<math>dk</math> dimension의 query와 key들, dv<math>dv</math> dimension의 value들로 이루어져 있습니다.이때 모든 query와 key에 대한 dot-product를 계산하고 각각을 √dk<math>dk</math>로 나누어줍니다. dot-product를 하고 √dk<math>dk</math>로 scaling을 해주기 때문에 Scaled Dot-Product Attention인 것입니다. 그리고 여기에 softmax를 적용해 value들에 대한 weights를 얻어냅니다.key와 value는 attention이 이루어지는 위치에 상관없이 같은 값을 갖게 됩니다. 이때 query와 key에 대한 dot-product를 계산하면 각각의 query와 key 사이의 유사도를 구할 수 있게 됩니다. 흔히 들어본 cosine similarity는 dot-product에서 vector의 magnitude로 나눈 것입니다. √dk<math>dk</math>로 scaling을 해주는 이유는 dot-products의 값이 커질수록 softmax 함수에서 기울기의 변화가 거의 없는 부분으로 가기 때문입니다.softmax를 거친 값을 value에 곱해준다면, query와 유사한 value일수록, 즉 중요한 value일수록 더 높은 값을 가지게 됩니다. 중요한 정보에 더 관심을 둔다는 attention의 원리에 알맞은 것입니다.Multi-Head Attention위의 그림을 수식으로 나타내면 다음과 같습니다.MultiHead(Q,K,V)=Concat(head1,...,headh)WO<math>MultiHead(Q,K,V)=Concat(head1,...,headh)WO</math>where headi=Attention(QWQi,KWKi,VWVi)dmodel<math>dmodel</math> dimension의 key, value, query들로 하나의 attention을 수행하는 대신 key, value, query들에 각각 다른 학습된 linear projection을 h번 수행하는 게 더 좋다고 합니다. 즉, 동일한 Q,K,V<math>Q,K,V</math>에 각각 다른 weight matrix W<math>W</math>를 곱해주는 것이죠. 이때 parameter matrix는 WQi∈Rdmodelxdk,WKi∈Rdmodelxdk,WVi∈Rdmodelxdv,WOi∈Rhdvxdmodel<math>WiQ∈Rdmodelxdk,WiK∈Rdmodelxdk,WiV∈Rdmodelxdv,WiO∈Rhdvxdmodel</math>입니다.순서대로 query, key, value, output에 대한 parameter matrix입니다. projection이라고 하는 이유는 각각의 값들이 parameter matrix와 곱해졌을 때 dk,dv,dmodel<math>dk,dv,dmodel</math>차원으로 project되기 때문입니다. 논문에서는 dk=dv=dmodel/h<math>dk=dv=dmodel/h</math>를 사용했는데 꼭 dk<math>dk</math>와 dv<math>dv</math>가 같을 필요는 없습니다.이렇게 project된 key, value, query들은 병렬적으로 attention function을 거쳐 dv<math>dv</math>dimension output 값으로 나오게 됩니다.그 다음 여러 개의 head<math>head</math>를 concatenate하고 다시 projection을 수행합니다. 그래서 최종적인 dmodel<math>dmodel</math> dimension output 값이 나오게 되는거죠.각각의 과정에서 dimension을 표현하면 아래와 같습니다.*dQ,dK,dV<math>dQ,dK,dV</math>는 각각 query, key, value 개수Self-Attentionencoder self-attention layerkey, value, query들은 모두 encoder의 이전 layer의 output에서 옵니다. 따라서 이전 layer의 모든 position에 attention을 줄 수 있습니다. 만약 첫번째 layer라면 positional encoding이 더해진 input embedding이 됩니다.decoder self-attention layerencoder와 비슷하게 decoder에서도 self-attention을 줄 수 있습니다. 하지만 i<math>i</math>번째 output을 다시 i+1<math>i+1</math>번째 input으로 사용하는 auto-regressive한 특성을 유지하기 위해 , masking out된 scaled dot-product attention을 적용했습니다.masking out이 됐다는 것은 i<math>i</math>번째 position에 대한 attention을 얻을 때, i<math>i</math>번째 이후에 있는 모든 position은 Attention(Q,K,V)=softmax(QKT√dk)V<math>Attention(Q,K,V)=softmax(QKTdk)V</math>에서 softmax의 input 값을 −∞<math>−∞</math>로 설정한 것입니다. 이렇게 한다면, i<math>i</math>번째 이후에 있는 position에 attention을 주는 경우가 없겠죠.Encoder-Decoder Attention Layerquery들은 이전 decoder layer에서 오고 key와 value들은 encoder의 output에서 오게 됩니다. 그래서 decoder의 모든 position에서 input sequence 즉, encoder output의 모든 position에 attention을 줄 수 있게 됩니다.query가 decoder layer의 output인 이유는 query라는 것이 조건에 해당하기 때문입니다. 좀 더 풀어서 설명하면, ‘지금 decoder에서 이런 값이 나왔는데 무엇이 output이 돼야 할까?’가 query인 것이죠.이때 query는 이미 이전 layer에서 masking out됐으므로, i번째 position까지만 attention을 얻게 됩니다.이 같은 과정은 sequence-to-sequence의 전형적인 encoder-decoder mechanisms를 따라한 것입니다.*모든 position에서 attention을 줄 수 있다는 게 이해가 안되면 링크를 참고하시기 바랍니다.Position-wise Feed-Forward Networksencoder와 decoder의 각각의 layer는 아래와 같은 fully connected feed-forward network를 포함하고 있습니다.position 마다, 즉 개별 단어마다 적용되기 때문에 position-wise입니다. network는 두 번의 linear transformation과 activation function ReLU로 이루어져 있습니다.FFN(x)=max(0,xW1+b1)W2+b2x<math>x</math>에 linear transformation을 적용한 뒤, ReLU(max(0,z))<math>ReLU(max(0,z))</math>를 거쳐 다시 한번 linear transformation을 적용합니다.이때 각각의 position마다 같은 parameter W,b<math>W,b</math>를 사용하지만, layer가 달라지면 다른 parameter를 사용합니다.kernel size가 1이고 channel이 layer인 convolution을 두 번 수행한 것으로도 위 과정을 이해할 수 있습니다.Positional Encodingtransfomer는 recurrence도 아니고 convolution도 아니기 때문에, 단어의sequence를 이용하기 위해서는 단어의 position에 대한 정보를 추가해줄 필요가 있었습니다.그래서 encoder와 decoder의 input embedding에 positional encoding을 더해줬습니다.positional encoding은 dmodel<math>dmodel</math>(embedding 차원)과 같은 차원을 갖기 때문에 positional encoding vector와 embedding vector는 더해질 수 있습니다.논문에서는 다른 *frequency를 가지는 sine과 cosine 함수를 이용했습니다.*주어진 구간내에서 완료되는 cycle의 개수PE(pos,2i)=sin(pos/100002i/dmodel)<math>PE(pos,2i)=sin(pos/100002i/dmodel)</math>PE(pos,2i+1)=cos(pos/100002i/dmodel)<math>PE(pos,2i+1)=cos(pos/100002i/dmodel)</math>pos<math>pos</math>는 position ,i<math>i</math>는 dimension 이고 주기가 100002i/dmodel⋅2π<math>100002i/dmodel⋅2π</math>인 삼각 함수입니다. 즉, pos<math>pos</math>는 sequence에서 단어의 위치이고 해당 단어는 i<math>i</math>에 0부터 dmodel2<math>dmodel2</math>까지를 대입해 dmodel<math>dmodel</math>차원의 positional encoding vector를 얻게 됩니다. k=2i+1<math>k=2i+1</math>일 때는 cosine 함수를, k=2i<math>k=2i</math>일 때는 sine 함수를 이용합니다. 이렇게 positional encoding vector를 pos<math>pos</math>마다 구한다면 비록 같은 column이라고 할지라도 pos<math>pos</math>가 다르다면 다른 값을 가지게 됩니다. 즉, pos<math>pos</math>마다 다른 pos<math>pos</math>와 구분되는 positional encoding 값을 얻게 되는 것입니다.PEpos=[cos(pos/1),sin(pos/100002/dmodel),cos(pos/10000)2/dmodel,...,sin(pos/10000)]<math>PEpos=[cos(pos/1),sin(pos/100002/dmodel),cos(pos/10000)2/dmodel,...,sin(pos/10000)]</math>이때 PEpos+k<math>PEpos+k</math>는 PEpos<math>PEpos</math>의 linear function으로 나타낼 수 있습니다. 표기를 간단히 하기 위해 c=100002idmodel<math>c=100002idmodel</math>라고 해봅시다. sin(a+b)=sin(a)cos(b)+cos(a)sin(b)<math>sin(a+b)=sin(a)cos(b)+cos(a)sin(b)</math>이고 cos(a+b)=cos(a)cos(b)−sin(a)sin(b)<math>cos(a+b)=cos(a)cos(b)−sin(a)sin(b)</math> 이므로 다음이 성립합니다.PE(pos,2i)=sin(posc)<math>PE(pos,2i)=sin(posc)</math>PE(pos,2i+1)=cos(posc)<math>PE(pos,2i+1)=cos(posc)</math>PE(pos+k,2i)=sin(pos+kc)=sin(posc)cos(kc)+cos(posc)sin(kc)=PE(pos,2i)cos(kc)+cos(posc)sin(kc)<math>PE(pos+k,2i)=sin(pos+kc)=sin(posc)cos(kc)+cos(posc)sin(kc)=PE(pos,2i)cos(kc)+cos(posc)sin(kc)</math>PE(pos+k,2i+1)=cos(pos+kc)=cos(posc)cos(kc)−sin(posc)sin(kc)=PE(pos,2i+1)cos(kc)−sin(posc)sin(kc)<math>PE(pos+k,2i+1)=cos(pos+kc)=cos(posc)cos(kc)−sin(posc)sin(kc)=PE(pos,2i+1)cos(kc)−sin(posc)sin(kc)</math>이런 성질 때문에 model이 relative position에 의해 attention하는 것을 더 쉽게 배울 수 있습니다.논문에서는 학습된 positional embedding 대신 sinusoidal version을 선택했습니다. 만약 학습된 positional embedding을 사용할 경우 training보다 더 긴 sequence가 inference시에 입력으로 들어온다면 문제가 되지만 sinusoidal의 경우 constant하기 때문에 문제가 되지 않습니다. 그냥 좀 더 많은 값을 계산하기만 하면 되는거죠.Trainingtraining에 사용된 기법들을 알아보겠습니다.Optimizer많이 쓰이는 Adam optimizer를 사용했습니다.특이한 점은 learning rate를 training동안 고정시키지 않고 다음 식에 따라 변화시켰다는 것입니다.lrate=d−0.5model⋅min(step_num−0.5,step_num⋅warmup_steps−1.5)warmup_step<math>warmup_step</math>까지는 linear하게 learning rate를 증가시키다가, warmup_step<math>warmup_step</math> 이후에는 step_num<math>step_num</math>의 inverse square root에 비례하도록 감소시킵니다.이렇게 하는 이유는 처음에는 학습이 잘 되지 않은 상태이므로 learning rate를 빠르게 증가시켜 변화를 크게 주다가, 학습이 꽤 됐을 시점에 learning rate를 천천히 감소시켜 변화를 작게 주기 위해서입니다.RegularizationResidual ConnectionIdentity Mappings in Deep Residual Networks라는 논문에서 제시된 방법이고, 아래의 수식이 residual connection을 나타낸 것입니다.yl=h(xl)+F(xl,Wl)<math>yl=h(xl)+F(xl,Wl)</math>xl+1=f(yl)<math>xl+1=f(yl)</math>이때 h(xl)=xl<math>h(xl)=xl</math>입니다. 논문 제목에서 나온 것처럼 identity mapping을 해주는 것이죠.특정한 위치에서의 xL<math>xL</math>을 다음과 같이 xl<math>xl</math>과 residual 함수의 합으로 표시할 수 있습니다.x2=x1+F(x1,W1)<math>x2=x1+F(x1,W1)</math>x3=x2+F(x2,W2)=x1+F(x1,W1)+F(x2,W2)<math>x3=x2+F(x2,W2)=x1+F(x1,W1)+F(x2,W2)</math>xL=xl+L−1∑i=1F(xi,Wi)<math>xL=xl+∑i=1L−1F(xi,Wi)</math>그리고 미분을 한다면 다음과 같이 됩니다.σϵσxl=σϵσxLσxLσxl=σϵσxL(1+σσxlL−1∑i=1F(xi,Wi))<math>σϵσxl=σϵσxLσxLσxl=σϵσxL(1+σσxl∑i=1L−1F(xi,Wi))</math>이때, σϵσxL<math>σϵσxL</math>은 상위 layer의 gradient 값이 변하지 않고 그대로 하위 layer에 전달되는 것을 보여줍니다. 즉, layer를 거칠수록 gradient가 사라지는 vanishing gradient 문제를 완화해주는 것입니다.또한 forward path나 backward path를 간단하게 표현할 수 있게 됩니다.Layer NormalizationLayer Normalization이라는 논문에서 제시된 방법입니다.μl=1HH∑i=1ali<math>μl=1H∑i=1Hail</math>σl= ⎷1HH∑i=1(ali−μl)2<math>σl=1H∑i=1H(ail−μl)2</math>같은 layer에 있는 모든 hidden unit은 동일한 μ<math>μ</math>와 σ<math>σ</math>를 공유합니다.그리고 현재 input xt<math>xt</math>, 이전의 hidden state ht−1<math>ht−1</math>, at=Whhht−1+Wxhxt<math>at=Whhht−1+Wxhxt</math>, parameter g,b<math>g,b</math>가 있을 때 다음과 같이 normalization을 해줍니다.ht=f[gσt⊙(at−μt)+b]<math>ht=f[gσt⊙(at−μt)+b]</math>이렇게 한다면, gradient가 exploding하거나 vanishing하는 문제를 완화시키고 gradient 값이 안정적인 값을 가짐로 더 빨리 학습을 시킬 수 있습니다.(논문에서 recurrent를 기준으로 설명했으므로 이에 따랐습니다.)DropoutDropout: a simple way to prevent neural networks from overfitting라는 논문에서 제시된 방법입니다.dropout이라는 용어는 neural network에서 unit들을 dropout하는 것을 가리킵니다. 즉, 해당 unit을 network에서 일시적으로 제거하는 것입니다. 그래서 다른 unit과의 모든 connection이 사라지게 됩니다. 어떤 unit을 dropout할지는 random하게 정합니다.dropout은 training data에 overfitting되는 문제를 어느정도 막아줍니다. dropout된 unit들은 training되지 않는 것이니 training data에 값이 조정되지 않기 때문입니다.Label SmoothingRethinking the inception architecture for computer vision라는 논문에서 제시된 방법입니다.training동안 실제 정답인 label의 logit은 다른 logit보다 훨씬 큰 값을 갖게 됩니다. 이렇게 해서 model이 주어진 input x<math>x</math>에 대한 label y<math>y</math>를 맞추는 것이죠.하지만 이렇게 된다면 문제가 발생합니다. overfitting될 수도 있고 가장 큰 logit을 가지는 것과 나머지 사이의 차이를 점점 크게 만들어버립니다. 결국 model이 다른 data에 적응하는 능력을 감소시킵니다.model이 덜 confident하게 만들기 위해, label distribution q(k∣x)=δk,y<math>q(k∣x)=δk,y</math>를 (k가 y일 경우 1, 나머지는 0) 다음과 같이 대체할 수 있습니다.q′(k|x)=(1−ϵ)δk,y+ϵu(k)<math>q′(k|x)=(1−ϵ)δk,y+ϵu(k)</math>각각 label에 대한 분포 u(k)<math>u(k)</math>, smooting parameter ϵ<math>ϵ</math>입니다. 위와 같다면, k=y인 경우에도 model은 p(y∣x)=1<math>p(y∣x)=1</math>이 아니라 p(y∣x)=(1−ϵ)<math>p(y∣x)=(1−ϵ)</math>이 되겠죠. 100%의 확신이 아닌 그보다 덜한 확신을 하게 되는 것입니다.Conclusiontransformer는 recurrence를 이용하지 않고도 빠르고 정확하게 sequential data를 처리할 수 있는 model로 제시되었습니다.여러가지 기법이 사용됐지만, 가장 핵심적인 것은 encoder와 decoder에서 attention을 통해 query와 가장 밀접한 연관성을 가지는 value를 강조할 수 있고 병렬화가 가능해진 것입니다.Referencehttp://www.whydsp.org/280http://mlexplained.com/2017/12/29/attention-is-all-you-need-explained/http://openresearch.ai/t/identity-mappings-in-deep-residual-networks/47https://m.blog.naver.com/PostView.nhn?blogId=laonple&logNo=220793640991&proxyReferer=https://www.google.co.kr/https://www.researchgate.net/figure/Sample-of-a-feed-forward-neural-network_fig1_234055177https://arxiv.org/abs/1603.05027https://arxiv.org/abs/1607.06450http://jmlr.org/papers/volume15/srivastava14a.old/srivastava14a.pdfhttps://arxiv.org/pdf/1512.00567.pdf
조회수 771

시프티의 출퇴근기록 및 급여정산 Excel

비즈니스 운영에 있어 데이터를 수집하는 것은 매우 중요합니다. 데이터 수집의 적절한 방법을 도입할 수 있다면 비즈니스의 거의 모든 영역을 수량화할 수 있습니다. 이 데이터는 과거 및 현재 운영 상황을 분석하고 미래 아웃풋을 예측하는 데 사용될 수 있습니다.당신 비즈니스의 출퇴근기록 시스템에도 동일하게 적용됩니다. 파트 타임 교대 근로자 또는 정규직 직원을 고용하든, 또는 근무 시간의 자유를 지원하는 근무 환경에 있든 관계없이 분석을 위한 출퇴근기록 데이터를 수집하는 것은 중요합니다. 예를 들어, 레스토랑의 가장 바쁜 시간에 몇 명의 직원이 근무하고 있었는지에 대한 정보를 얻을 수 있으며 이를 그 시점에 발생된 매출 또는 고객 불만 사항과 비교할 수 있습니다. 당시 직원이 부족했다는 것을 알게 되었다면 다음 휴가철에, 인원 보강에 대한 결정을 내릴 수 있습니다.시프티의 출퇴근기록 시스템은 관리자가 계획한 근무일정와 연결되며 추후 분석 및 처리를 위해 Excel로 내보낼 수 있습니다. 이 추출된 엑셀에는 다음 항목이 표시됩니다.근태 (붉은 색)A) 출근시간 / 퇴근시간 및 휴식시작/종료 시간B) 자동으로 추가된 휴식 시간 [규칙 설정 가능]C) 총 시간 (퇴근시간 - 출근시간 - 모든 휴게시간)D) 시급E) 기본 급여 (C x D)급여 (푸른 색)F) 연장근로 시간/수당G) 야간근로 시간/수당H) 휴일근로 시간/수당I) 주휴 인정여부/수당J) 총 추가수당K) 총 급여 (E + J)시프티에서 다운로드 한 Excel을 보면 각 열에 앞서 언급한 모든 항목이 표시됩니다. 무엇이 시프티의 출퇴근기록 엑셀을 차별화할까요? 그것을 살펴 봅시다.필터Excel로 작업 할 때는 거의 항상 필터를 사용해야합니다. 급여정산을 처리하려면 특정 직원을 필터링하거나 각 근무지 별로 필터하여 총 근무시간과 임금을 분석해야합니다. 걱정하지 마세요. 시프티에서 다운받은 Excel에는 이미 필터가 설정되어 있으므로 Excel로 내보낼 때마다 필터를 설정할 필요가 없습니다.함수 및 공식 적용‘총 시간’과 ‘기본 임금’의 셀을 클릭하면 함수와 수식이 들어간 것을 볼 수 있습니다. 따라서 출근시간, 퇴근시간 또는 휴게시간을 변경하면 다른 관련 셀을 자동으로 업데이트하여 총 근무시간과 그에 따른 기본 급여를 계산해 줍니다.상단에 합계(소계) 표시출퇴근기록들 맨 위에는 굵은 글씨가 있는 행이 있습니다. 무엇인지 짐작이 가시나요? 아래의 모든 근무시간 또는 임금의 합계를 계산하는 Subtotal 함수가 적용되어 있습니다. 이 굵은 글씨의 행은 오직 엑셀 안에서 눈에 보이는 기록들의 합계를 내줍니다. 따라서 직원(들), 지점(들) 또는 직무(들)로 필터링하면, 필터된 기록들의 합계를 알 수 있습니다.아래 시프티에서 다운로드한 Excel의 클로즈업 스크린 샷에서 상단의 굵게 표시된 필터, 함수 및 합계 볼 수 있습니다.관리 관점에서 적절한 인적 자원을 올바른 역할로 적절한 위치에 할당해야하는데 유능한 직원이 지루한 Excel 작업에 얽매이고 있다면 그 방안을 모색해 보세요. 효율성 증대를 원한다면 시프티로 그들이 개개인의 전문 분야에서 자신만의 능력을 발휘할 수 있도록 시간을 절약해주세요.#시프티 #고객가치 #핵심가치 #기업소개 #서비스소개
조회수 1881

스타트업이 돈을 구하는 방법 (3)

지난 글에서 지분을 투자자에게 나누어 주고 돈을 구하는 '투자'라는 방법에 대해서  이야기했다. 이번에는 소위 '공짜 돈'이라고 불리는 영어로는 'Grant'이고 흔히 정부 지원금이라고 불리는 방법에 대해서  이야기해보고자 한다.정부 지원금은 크게 두 가지로 나눌 수 있다. 첫 번째는 정부 과제라고 불리는 정부 R&D 사업이고, 두 번째는 정부 지원 사업이다. 말 그대로 정부 R&D 사업은 정부가 기업의 R&D에 돈을 지원해주는 사업이고 그 외 나머지 정부지원 사업은 R&D 이외에 다양한 목적으로 돈을 지원해준다. 그중에서 금액도 크고 다양한 사업이 많은 정부 R&D 사업에 대해서 먼저  이야기해보겠다.정부 R&D 사업은 다시 크게 두 가지로 나눈다. RFP 즉 정부에서 개발할 내용을 만들어 놓고 공고를 내서 과제를 수행할 주체를 찾는 지정 공모형과 RFP 없이 R&D를 수행할 주체가 제안한 내용으로 심사를 받는 자유공모형으로 나눈다. R&D 과제의 규모는 대부분 RFP가 있는 지정공모 과제가 자유공모 과제보다 큰 편이다. 자유 공모 과제가 연간 5억 원이 넘는 과제가 없는 반명에 지정 공모 과제는 연간 예산이 100억이 넘는 과제도 있다. 정부 R&D 사업에 목숨을 걸고 뛰어드는 중소기업들이 너무 많기 때문에 스타트업이 큰 규모의 과제를 노리는 것은 확률 낮은 싸움을 하는 거라고 생각한다. 물론 방법은 큰 규모의 과제를 주체가 아닌 참여 기업 형태로 곁다리고 끼어 들어가는 방법도 있지만, 이것도 고도의 정치력이 필요한 영역이기 때문에 쉽지 않은 일이다.스타트업이 정부 R&D 사업을 하는 것에 대해서는 호불호가 극명히 갈린다. 정부 R&D 사업은 수많은 문서 작업, 복잡한 회계 증빙, 그리고 복잡한 수행 절차로 인해서 인력이 부족한 스타트업에게는 본연의 업무를 방해할 수 있다. '공짜'이지만 '공짜'가 아닌 그런 돈이다. 하지만 역시 본연의 비즈니스로 수익을 내지 못하고 있고 투자도 받지 못하고 있는 상황에서는 생명을 연장할 수 있는 방법 중 하나이다. 실제로도 많은 스타트업들이 이렇게 생명 연장을 하고 있다. 특히 지정공모 과제의 경우는 스타트업이 제안한 내용이 아닌 정부에서 정해진 내용으로 R&D를 수행하는 것이기 때문에 시장의 현실과는 대부분 동떨어져 있는 내용이 많다. 스타트업 사업의 특성상 시장에서 Feedback을 받아가면서 지속적으로 사업 모델을 바꾸어 나가야 하는데 지정 공모 과제는 1년 전에 만들어진 RFP로 시작을 해서 시장의 Feedback과는 상관없는 심사위원들의 Feedback을 받아가면서 과제를 수행해야 하는 프로세스를 가지고 있기 때문에 시장의 상황과 동떨어질 가능성이 높다. 그렇기 때문에 개인적으로 정부 과제를 수행하려 하는 스타트업들은 지정공모 보다는 자유공모 형식의 R&D 과제에 자신들이 원래 하려고 했던 사업을 제안해서 수행하는 것이 나은 선택이라고 생각한다.정부 R&D 사업 외에도 다양한 정부 기관과 지자체에서 요즘은 많은 지원 사업을 하고 있다. 마케팅, 홍보, 금형, 채용 지원 등 다양한 지원 사업이 있다. 금액이 크지 않지만 스타트업 입장에서는 비용을 아낄 수 있는 좋은 방법이 될 수 있다. 하지만 이것도 '공짜'이지만 '공짜'가 아닌 것이, 이런 지원 사업 뒤에는 꼭 많은 문서 작업이 뒤를 따른다. 이런 문서 작업을 전담할 수 있는 전문 인력을 확보하지 않는다면 스타트업 본연의 업무에 지장을 초래할 가능성이 있기 때문에 신중할 필요가 있다. 물론 익숙해지면 정부 지원사업 지원도 생산성이 높아진다.  정부 지원금은 '마약'과도 같다고 한다. 잘쓰면 스타트업이 어려운 파도를 헤쳐나가는데 느끼는 고통을 경감시켜줄 수 있는 좋은 '마약'이 되지만 과용하면 '마약'이 끊어진 이후를 감당하지 못하는 약골로 만들 수 있다. 결국 스타트업 대표의 판단일 것이다.다음편에서는 마지막 방법인 '대출'에 대해서 이야기하고 마무리를 하려고 한다.#NEOFECT #스타트업 #스타트업창업 #창업자 #투자유치 #정부지원금 #정부자금 #자금유치 #꿀팁 #인사이트
조회수 1449

이노버즈미디어의 대표 미남, '박충선 디자이너'

안녕하세요, Y입니다! 지난 옐로피플 스토리에서 뷰신 나나가 첫 번째 인터뷰로 소개되면서 엄청난 화제를 몰고 왔는데요. 이번 두 번째 타자는 바로바로 YDM 소속의 디지털 마케팅 에이전시 이노버즈미디어의 대표 꽃미남 박충선 디자이너 입니다!Y: 안녕하세요! 옐블 독자들을 위한 자기소개 부탁 드려요! 박충선: 안녕하세요, 이노버즈미디어에서 브랜드 콘텐츠를 만들고 있는 디자이너 박충선입니다! 반갑습니다! Y: 브랜드 콘텐츠라! 정확히 어떤 일인지 궁금합니다박충선: 쉽게 말해서 각 기업 브랜드들이 페이스북, 인스타그램 등 소셜미디어에 발행하는 이미지를 제작하는 거죠. 현재는 롯데카드랑 글로벌 스포츠 의류 브랜드인 스파이더 코리아를 맡고 있어요. 아래와 같은 식으로 각 브랜드의 소셜미디어 콘텐츠를 제작하고 있습니다.Y: 본인이 느끼는 이노버즈만의 특별한 점이나 자랑할만한 사내문화가 있나요? 박충선: 사실 이노버즈가 제 첫 직장이라 다른 회사들과 비교하긴 어렵지만, 여기서 1년 4개월동안 몸담으면서 느낀 것은 정말 수평적이라는 거예요. 서로 눈치보지 않고 말할 수 있는 분위기다 보니 정말 다양하게 싱크빅 돋는 아이디어가 많이 나오죠 :) 또 매월 두 명씩 뽑아서 전 직원 앞에서 다양한 주제로 스피치를 해요. 업무에서 벗어나 본인이 흥미를 느끼는 분야 등 개인적인 이야기로 진행하기 때문에 서로를 알아가는데 큰 도움이 되는 것 같아요. 또 인턴과 신입사원은 물론 임직원들을 위한 다양한 교육과 지원을 해주는 것도 이노버즈만의 특별한 점인 것 같아요.출처 : 이노버즈 페이스북Y: 박충선님의 주제는 뭐였나요? 박충선: 저는 아직 안 했어요!ㅋㅋㅋㅋ 샤이가이라서.. Y: 샤이가이셨구나ㅋㅋㅋㅋ 네 다음질문 드릴게요! 기억나는 재미있는 에피소드가 있나요?박충선: 인턴기간에 업무와는 별개로 동료들에 대한 콘텐츠를 만들었어요. 이노버즈 가족 한 명 한 명에 대해 웹툰형식으로 만들었는데 친해질수록 디스(?)내용을 조금씩 넣어봤거든요. 그러다 보니 반응도 좋았고 다들 다음 편은 어떤 디스가 나올지 기대해줘서 재미있었어요ㅋㅋㅋ 역시 까야 제맛이라고……Y: 드라이플라워 고문이라니ㅋㅋㅋㅋ앞으로 드라이플라워 볼 때마다 죄책감들것 같아요ㅋㅋㅋ 그나저나 디자인 팀이라 남자가 많이 없을 것 같아요! 박충선: 이노버즈에 처음 입사했을 때 디자인 실에 저 포함 두 명 빼고 전부 여자분들이었어요. 처음엔 좀 걱정이 됐는데, 다들 좋으신 분들이고 형들처럼(!) 편하게 대해 주셔서 좋았어요ㅎㅎ Y: 다 여자분들이면 회식이 많이 없겠어요! 박충선: 왜 때문에 그런 생각을…… 저보다 잘 드세요 다들 (또르르)Y: 빨리 넘어갈게요!! 이노버즈/옐로모바일에 바라는 점이 있다면? 박충선: 일을 한다는 건 돈을 버는 것도 중요하지만 함께 일하는 사람들, 그리고 회사에서 임직원들을 대하는 자세가 엄청 중요한 것 같아요. 앞으로도 지금처럼 인간관계를 중요시 여기고 직원 한 사람 한 사람을 우선시하는 회사였음 좋겠어요. Y: 마지막 질문입니다! 앞으로는 어떤 일을 해보고 싶으신가요? 충선: 아주 먼 미래에는 디자인을 접목한 카페나 술집을 운영하고 싶어요. 당장은 원래 하고 싶었던 미술을 배워서 지금 하는 일에 적용시켜보고 싶습니다. 앞으로도 재미있는 컨텐츠로 브랜드에 좋은 영향을 미치는 디자이너가 되겠습니다! 저와 이노버즈 많이 응원해주세요! 

기업문화 엿볼 때, 더팀스

로그인

/