Summary: BERT(Bidirecitonal Encoder Representations from Transformer)

 

사전학습이 된 양방향 표현법으로 각 모든레이어에서 우측과 좌측의 문맥정보(context)을 결합하는 것을 사용하는 언어모델이다. BERT는 Transformer의 목적함수가 변형된 형태이다. 이전 개발된 Transformer에서는 이전단어들을보고 다음단어를 예측하는 Uni-directional(일방향)의 언어모델이었다면, BERT은 다음의 차이가 있다.

 

 

  • 사전학습을 양방향으로 해서, 문맥정보를 더 파워풀하게 학습 (=Deeply bidirectional. 예, 나는 밥을 ???.    ???->밥을->나는) (Transformer와 유사한 언어를 인코딩해서 압축하는 형식이나, Transfoermed은 한번에 모든 단어들은 한거번에 보지만, BERT은 left-to-right, right-to-left순차적으로 본다)
  • 사전학습시에 Pre-traniing 과 fine tuning을 두 단계를 모두 활용하는 형식(BERT은 2가지의 손실함수를 가지고있고, 이 두 가지의 손실함수의 합을 손실함수로하여 동작한다)

 

 

 


Introduction

 

 

Pre-training: 대용량 데이터를 일단 학습시켜놓고, 이후에 재학습하는 것을 의미한다. 이러한 사전학습으로 튜닝하는 방식은 크게 두가지로 나뉜다.

  1. Feature-based (Parameters are fixed): 파라미터를 고정시켜놓고(e.g. tensorflow에서는 freezing). e.g) ELMO
  2. Fine-tuning (Parameters are not fixed): 특정 테스크에는 굉장히 적은 파라미터. GPT 계열이나 Uni-directional 언어모델.

(좌: Feature based, 우: finin tuning): https://www.pyimagesearch.com/2019/06/03/fine-tuning-with-keras-and-deep-learning/

그런데, 여태까지 이런 접근법은 언어를 표현하기위해, 1) 단방향의 언어를 사전학습(예, 좌측에서 우측으로만 단어를 예측), 2) 파라미터를 고정하든 안하든 같은 목적함수를 가지고 사전학습을 한다. 

 

=> 저자들은 이러한 기술이 사전학습을 더 잘 쓸수 있는것에 오히려 제한을 둔다고 얘기한다. 특히, fine-tuning을 하는 방법에서는 더욱 그렇다고 얘기한다 (아마도, 글자는 좌측에서 우측으로만 예측해야하니까, 반대로 우측에서 좌측으로 이해해서 얻을 수 있는 단어들 ([] 먹었다) 이런 정보들도 활용을 못하지 않나?) 생각이든다. 저자들도 가장큰 단점은 단방향모델이 가장 단점이라고 하고 있다(The major limitation is that standard language models are unidirectiona). GPT2 같은 경우도, sentence level task(문장단위의 예측모델)이나 token level task(예, question anwering)에서는 최적의 성능을 보여주지 못했는데, 양방향의 문맥정보를 활용하지 못했기 때문이라고 한다.

 

 

BERT는 Transformer의 목적함수가 변형된 형태이다. 특히, fine-tuning based approaches이다. 그리고, 단방향의 단점을 개선한 MLM(Masked language model)이다. 즉, 이전 개발된 Transformer에서는 이전단어들을보고 다음단어를 예측하는 Uni-directional(일방향)의 언어모델이었다면, BERT은 양방향으로 파악한다는 것이다.

위의 그림은 MLM에 관한 그림이다. Input에 뚤린 마스크를 Output에서 예측해야하는 것을 의미한다. 또한, BERT에서는 단방향만 처리하는게 아니라, 양방향으로 단어를 예측하도록 구조화하였다. How->are-> ? . 와 today, doing -> ? 을 예측해야하니까 문더 강력한 언어모델이 될 수 있다고 한다.

 

 

. BERT은 2가지의 손실함수를 가지고있고, 이 두 가지의 손실함수의 합을 손실함수로하여 동작한다.

 

손실함수의 종류는 다음과 같다.

 

  1. Loss function 1: BERT은 문장에 15%정도를 Masking을 해놓고, 처리한후에 masking된 단어를 에측하는 방법에 관한 손실함수를 가지고 있다. (일종의 CBOW다). 다만, CBOW와의 차이점은 양방향으로 단어를 예측한다. 
  2. Loss function 2: 문장들 사이에 관계를 학습하여, 주어진 문장과 다음문장이 연속된 문장인지 문맥을 학습(contextual)할 수 있게끔 손실함수를 설계했다. 예를 들어, 문장A가 문장B와 연속된 문장인지? 아닌지를 학습하기위한 장치를 마련했다. 다음 문장이라는 라벨링을 추가했다. 

 

CBOW와 SKIP gram의 차이. CBOW은 N개의 주어진 단어(t-2, t-1, t+1, t+2)로 로 하나의 단어를 예측해야하는 방법이라면 Skip gram은 t+0만 가지고 t-2, t-1, t+2을 예측해야하는 방법. BERT을 일종의 CBOW의 방법을 양방향으로 하되, t-2, t-1으로 한번, t+2, t+1로 한번 한다고 이해하면 된다.

 

 

 


Pre-requisite

 

 

 


Pretraning language model은 어떤것들이 있어왔고, 어떤 제한점이 있었는가?

 

  1. Unsupervised feature-based approaches: 주로 좌측에서, 단어들을 임베딩하기위해사용되었고, 우측으로 언어모델링을 하는 방법들이 많이 사용되었거나(Mnih and Hinton, 2009), 좌측의 잘못 입력된 단어들과 우측의 문맥으로 단어들이 적절하게 쓰였는지 판단하는 목적으로 주로 쓰였었다. 이 접근법들은 일반화되면서, 문장을 임베딩하는 방법이나(Kiros et al., 2015; Logeswaran and Lee, 2018), 문단을 임베딩 하는 방법들로도 사용되었다s (Le and Mikolov, 2014). 예를들어, 문장(senstence)을 표현하기위해서는 다음 문장들 어떤게 적절한지 적절한 문단을 훈련하는 목적함수를 갖게 사용했거나, 좌측의 단어들이 있을떄, 다음문장을 생성(generation)하는 방법, 또는 오토인코더에 사용되는 목적함수들이 사용되었다. ELMo와 이전세대들이 에애 해당한다. 2017년~2018년에 개발된 ELMo은 전통적인 단어임베딩을 위해 쓰였고, 좌측->우측과 우측->좌측의 다른 언어모델로부터 문맥정보를 담은 feature들을 추출해냈다. 그 다음에 left-to-right, right-to-left표현을 단순히 concatenatation시켜서 이 특징값을 사용했다. ELMo와 유사하게, 다른모델들도 있었는데 단순히 feature based으로 사전학습했지만, deeply bidrectional을 사용하진 않았다. 
  2. Unsupervised Fine-tuning approaches: 유사하게, 사전에 학습된 가중치에 목적에 맞게 모델의 가중치 전체를 다시 학습하는 방법으로는 단어를 표현한는 방법으로는 2008년에  연구(Collobert and Weston, 2008)가 시작되었다. 이후에는 일단 인코더에서 문장이나 문서를 임베딩한 후에, 목적에 맞게 재학습하는 연구들이 2015~2018년에 주로 있었다. 이러한 접근법의 가장 큰 장점은 스크레치(scratch) 모델의 적은수의 파라미터만 다시 재학습된다는 것이다. 이에 해당하는 것이 OpenAI GPT, GLUE에 해당한다.
  3. Transfer learning from supervised data: 자연어, 기계번역등에서의 많은 연구들이 이에 해당한다. 

 


본문

 

BERT은 크게 2단계의 프레임워크의 순서를 따른다. 첫 번째는 pre-tranining, 둘 째로는 fine-tuning이 이에 해당한다. 사전 학습때는 모델은 여러 테스크에 적용하기위해서, 라벨이 없는 데이터셋(비지도학습)을 학습한다. 그 후, fine-tuning단계에서는 BERT model을 초기파라미터가 세팅된후에, 모든 파라미터를 다시 목적에 맞는 테스크(down stream task)를 위해 재학습한다.

 

아래의 그림처럼, 출력부문을 제외하고는 같은 모델을 쓴다. 그러나, 출력부도 초기에는 BERT가 사전학습된 파라미터로 초기세팅이 이뤄진다. 가장 두드러진 특징은 BERT은 어떤 목적의 테스크든, 동일한 아키텍처라는 것이다. 즉, pre-tranied model의 아키텍처와 final downstream model가 거의 차이가 없다는 것이다.

 

  • 모델: 모델은 multi-layer bidirecitonal transformer encoder이다. Transformer은 2017년에 개발된 transformer을 이용했다. Transformer의 적용은 거의 동일하고, 파라미터 사이즈들만 좀 다르다. BERT base은 GPT등 성능비교를위해 만들어낸것들이고 BERT Larget은 꽤 큰 사이즈의 파라미터를 가진 모델이다.
  • 입출력의 표현: 이 모델은 다양한 downstream task을 쓰기위해서, 명확한 표현이 필요하다고 한다. 입력은 1개의 문장 또는 2개의 문장인데, 따로 묶인 형태로 입력값이 전달된다. 모든 문장에서의 첫토큰은 문장의 시작임을 알려줄수 있는 CLS라는 스페셜한 토큰을 전달해준다. 만일 두개의 문장이라면 두 문장을 이어붙인 후에 하나의 CLS 토큰을 부여한다. 이 문장이 그럼에도 다른문장임을 나타내기 위해서는 스페셜 토큰을 하나 붙여주는데 [SEP] 토큰이다.
  •  

 

Pre-tranining BERT

 

손실함수의 종류는 다음과 같다.

  1. Loss function 1: BERT은 문장에 15%정도를 Masking을 해놓고, 처리한후에 masking된 단어를 에측하는 방법에 관한 손실함수를 가지고 있다. (일종의 CBOW다). 다만, CBOW와의 차이점은 양방향으로 단어를 예측한다. 
  2. Loss function 2: 문장들 사이에 관계를 학습하여, 주어진 문장과 다음문장이 연속된 문장인지 문맥을 학습(contextual)할 수 있게끔 손실함수를 설계했다. 예를 들어, 문장A가 문장B와 연속된 문장인지? 아닌지를 학습하기위한 장치를 마련했다. 다음 문장이라는 라벨링을 추가했다. 

 

 

예를 들어, 아래와 같다. 연속적인 문장인 경우는 라벨을 True, 아니면 False

Sentence A: He is sad Sentence A: He is sad
Sentence B: Because he lost.. Sentence B: A girl is ...
Label: Next sentence Label: Not next sentence

 

 

 

 

 


RNN계열에서도 Bi-direcitonal RNN(=shallow)도 가능하지 않은가?

정답은 Yes이다. RNN계열에서도 bi-directional RNN으로 예측하고자하는 Y을 양방향으로 예측한다. 아래의 그림과 같이 Bi-directional RNN은 "The results clearly show that"의 첫 번째 토큰인 The을 이용해서 예측값을 만들고자할때, reverse된 문장의 가장 첫 번째 단어인 "that"의 결과값과 concat시킨 후에 softmax을 적용해서 예측한다. 즉 LSTM의 unit이 d이면, 반환되는 hidden state의 vector size가 2d가 된다.

반응형

기업 개요

 

2011년 신세계에서 인적분하하여, 신세계 백화점 사업부문과 마트사업부문으로 나뉘게 되는데, 동사(이마트)는 마트사업부문으로 신세계 푸드, 건설, I&C, 엘엔비, 조선호텔, 스타벅스, 스타필드 등을 보유하고 있다. 주 비지니스모델은 유통으로 이마트(주로 오프라인), 쓱닷컴(온라인), 이베이(최근 인수, 온라인채널)으로 유통구조를 다변화하기위한 노력을 하고있다.

사업부문 및 회사명

유통업 ㈜이마트, ㈜이마트에브리데㈜이마트24, ㈜에스에스지닷컴,
㈜신세계프라퍼티, ㈜스타필드청라, ㈜스타필드고양㈜스타필드창원, 
신세계동서울피에프브이, 캡스톤APAC전문투자형사모투자신탁 2호,
DA VINCI HOLDCO PTE. LTD, 
신세계티비쇼핑
ㆍ리조트업 ㈜조선호텔앤리조트
IT서비스업 신세계아이앤씨
식음료업 ㈜신세계푸드, 신세계엘앤비
건설레저업 신세계건설
해외사업 E-MART VIETNAM CO.,LTD., PK RETAIL HOLDINGS, INC.,
GOOD FOOD HOLDINGS, LLC, BRISTOL FARMS, INC.,
METROPOLITAN MARKET, LLC,
 NEW SEASONS MARKET, LLC

Q. 종속기업 외 관계기업은 어떤것들이 있는가?

 

이마트는 연결자회사가 꽤 많고, 각 사업부문별로 성장율을 따져볼 필요가 있다. 이마트자체보다는 신설한 자회사가 어느정도 성과를 이루는지 파악이 필요하다. 

매출액순

  • 이마트24: 편의점 부문.
  • SSG.COM (쓱닷컴): 신세계몰, 신세계백화점, 이마트몰 등 신세계그룹 산하의 법인의 온라인 유통을 운영하느 기업이다.
  • 이마트 에브리데이: 홈플러스 익스프레스와 같이 SSM(Super SuperMarket)을 포지셔닝하고 있는 기업. 주로 500평~8000평의 규모로 대형할인점과 소규모 슈퍼마켓의 중간크기에 소매점
  • PK Retail holdings: 미국의 식품 소매업체를 운영하기위한 미국의 자회사. 미국의 현지 식품 소매업체인 굿푸드 홀딩스(Good food holdings)을 인수하기위한 목적의 투자회사
  • 신세계 I&C: 신세계 산하의 법인의 IS업체(솔루션 업체). 주로 소프트웨어를 판매하거나 대여하는 비지니스 모델
  • 신세계 호텔엔 리조트: 조선호텔
  • 신세계 프라퍼티: 부동산 개발업이 주목적. 개발기획~부동산개발~빌딩관리 등을 하고, 스타필드를 운영한다.

 

매출액보다 영업이익을 주로 보는편인데,

  1. 쓱닷컴이 연간 800억이나 손실보는 자회사이다. 쓱닷컴을 포기하자니, 그렇지 않은 사업부인것같은데, 경영진에서 쓱닷컴이 이렇게 적자가 연속해도 버티는 이유가 있을 것 같다.
  2. 호텔업은 코로나19기저효과로 어쩔 수 없었던 것 같은데.. 2019년은 적자, 2018년은 적자 2017년은 흑자.. 왔다갔다하는 사업부 같다(레스케이프 호텔이 이마트 꺼다). 꽤 질 나쁜 자회사들이 있는 회사이다.
  3. 에브리데이는 yoy로 역성장한거 같고...
  4. 신세계푸드는 의외로 코로나19로 학교급식/사내급식이 잘 안될 것 같았는데도, 호기롭게 +영업이익을 보인다.
  5. 신세계I&C는 그룹사의 클라우드서비스를 수주받기때문에 클라우드부문이 흑자사업이라 강세를보이는듯하다.
  6. 위의 쓱닷컴/호텔업의 적자에도 불구하고, 그외 엄청난 영업이익이 있는데, 적어놓치는 않았지만.. 이마트 본사일 듯하다.

자료: 이마트, 이베스트투자증권 리서치센터. https://ssl.pstatic.net/imgstock/upload/research/company/1634089106848.pdf

 

 

영업외손익(지분법이익): 이마트는 스타벅스코리아 주식을 2021년 2Q까지는 50%을 소유하고 있다. 스타벅스코리아 주식을 50% 초과로 보유할 경우가 종속회사로 편입되는데, 현재는 50%까지로 지분법이익으로 계상하고 있기 때문에, 영업외손익으로 관리하고있다. 

지분율에 따른 영업외손익(지분법이익), 자산구분의 계상 방법. 이는 지분율에 따라 절대적인 것은 아니고, 절대적인(실질적인) 영향력을 행사할 수 있느냐의 유무로 판단하기도 한다.

 

스타벅스커피코리아의 당기순이익은 2021년 1Q만해도 934억(영업이익이 아니다..), 2021년 2Q는 598억이다. 이를 지분법 50%로 적용하면 각각 297억, 469억이다. (괄호는 주로마이너스를 쓰는데 왜 이렇게 써놧나. .헷갈리게) . 여튼 스타벅스코리아로 상당히 캐시가 들어온다. 앞서 서술한 자회사들의 영업이익을 다 합치면 적자이고, 이마트 본사만 흑자인데, 자회사들의 적자를 멘징해줄 지분법 자회사가 스타벅스커피코리아이다. 또한, 스타필드하남/안성도 지분법을 적용하면 아주조금은 이익을 가져다준다. 

 

 


Q. 이마트가 최근 스타벅스 코리아의 지분을 추가매입했다, 어느정도의 효과가 있을까?

 

2021년 7월 27일 스타벅스커피코리아의 주식을 스타벅스 본사로부터 17.5%을 추가매수했다. 나머지 약 33%의 지분은 싱가포르 국부펀드에서 인수했다는 것으로 알고 있다. 여튼 스타벅스코리아 지분을 17.5%을 4700억정도로 사들였다.

 

 

 

 


스타벅스코리아주식을 어느정도 가격에 사게된건가?: 스타벅스커피코리아가 2021년 상반기 기준 영업이익을 958억을 냈다. 단순히 이에 2배를 곱해서 2000억의 영업이익이고, 지분법이 50%였다면 약 1000억의 순이익을 가져다준다. 이를 67.5%을 가져간다고 생각하면 1350억이다. +350억을 얻는데 약 4800억의 추가 지분이 소요되었다. 단순계산으로는 PER 16배정도로 질렀는데, 스타벅스커피코리아주식을 적절하게 매수한게 아닌가 판단된다.

 

아래의 기사에서도 스타벅스의 기업가치를 PER 17~21배정도로 고려해서 거론하고 있다고 한다(https://www.etoday.co.kr/news/view/2064979)

 

시장에서는 이미 이마트의 계열사로 편입했을때, 다음과 같이 예상하고 있다. "매출의 10% 성장, 영업이익 50%증가, 순이익 7% 향상". 아마 추가지분을 획득하면서, 조달한 4700억은 손익계산서에 반영하지 않으니, 단순히 지분만으로도 순이익이 이렇게 향상될 수 있다. 

 

 


이마트 家 내에 훌륭한 자식인 스타벅스, 빌런인 아들딸은 없는가?

 

이마트의 계열사는 거의다 빌런이다. 아래의 기사의 내용은 2020년 이마트 계열사들은 다합쳐서 394억의 영업손실을 냈다는 기사이다 (https://biz.chosun.com/distribution/food/2021/10/01/6AJ332BDBZGTLOYBROC7LRCPSQ/). 그럼에도 불구하고 스타벅스커피코리아 영업이익을 상반기에만 900억 냈다. 계열사의 한해 적자를 1분기만에 맨징하고도 추가로 이익을 벌어다준 것이다.

 

시장에서는 이미 이마트의 계열사로 편입했을때, 아래와 같이 예상하고 있다

"매출의 10% 성장, 영업이익 50%증가, 순이익 7% 향상". 

 

 


현재주가는 ?

 

작성일 당시의 이마트의 현재주가는 16만 2,000원이다. 2020년 당시의 당기순이익은 3,626억으로 당시시총을 고려했을때 PER 11배정도 되었다. 

이마트의 당기순이익은 꽤 높은편으로 착각할 수 있는데, 이는 경상이익은 아니며, 일회성으로 발생하는 이익이다, 최근에 이마트가 일부 점포를 매각해서 얻은 순이익이다. 

 

 

최근 2년간 14개의 이마트점포와 마곡부지들을 팔아서 꽤 당기순이익이 올랐다. 이는 영업여력이라 보긴 어렵다. 이돈으로 무엇을 할거냐는 고민이지만,  경상적인 영업이익은 아니라는 것이고, 일회성비용을 차감한 경상이익은 1Q 1000, 2Q 0, 3Q 1500, 4Q 1000정도잡으면 약 3500~4000억순이익으로 현재 이마트의 시총 4조 5천억이니, 약 PER 12~15배의 가치평가를 받고있다.

 

아래의 그레프는 이마트의 밴드차트를보여주는데, PER5.8배는 말이안되며, 이는경상이익으로 이뤄진 PER 배수가 아니기때문이다. PER 5.8배가아닌 12배정도로 생각된다. 

 

 

 


이마트의 성장동력은 어떤 것이 있나?

 

Q. 회사가 추가로 성장할 수 있는 요소들은 어느 것들이 있는가?

=> 스타벅스커피코리아에 달렸나? (중립)

최근 스타벅스코리아의 무리한 이벤트 등으로, 근로자들이 진통을 겪고 있지만, 스타벅스커피코리아의 매장은 전년대비 대략 66개가 추가되었다. 한국 사람들이 스타벅스코리아에 무척의존적이기 때문에, 출점으로 비지니스를 양적확대하는 것은 좋아보인다. 1508점정도에서 1574점으로 늘었으니 5%정도 늘어난 것으로 보인다. 엄청난 성장율은 아니지만, 견조한 성장을 보인다. 혹시나,

이런 출점에 제한이 있고, 원자재인 커피값이 오르는등으로 영업이익율이 훼손되면 이는 꽤 큰 타격이다.

 

=> 리츠 사업 (중립)

최근 리츠열풍으로 SK리츠가 성공적으로 증시에 안착하고, 신세계도 이마트설립에 관심을 받고있다. 아마도, 아래와 같은 그림으로 AMC리츠가 운용될 것 같다.

이마트는 위에서 얘기했던것처럼 자회사중에 "이마트 프로퍼티"가 있다. 부동산개발에 관련된 회사인데, 이지스자산운용과 리츠AMC(자산관리회사)를 신설하는 것을 논의중이다. 최근에 이베이코리아, 스타벅스등을 사느라고, 투자부담이 커졌는데, 리츠 AMC을 설립하면, 보유하고 있는 그룹의 자산을 AMC리츠쪽에 쉽게 던질 수 있다. AMC리츠는 투자자가 불특정다수로 돈을 모아오기때문에, 일단 상장시키고나면, 매수의 주체는 AMC리츠이지만 실질적으로 돈은 주주들이 댄다...

다만 이렇게 리츠를 운용할경우, 이마트 입장에선는 매각했던 자산쪽에서 임대료를 AMC리츠에 납부해야기때문에 영업이익율의 훼손이 있을 수 있다. 매각한 대금으로 투자자산을 꽤 괜찮은 것을 얻지 않는다면, 건물주가 자기 건물팔고, 주식투자하는데 투식투자는 망하고, 월세를 내는 꼴이 될 수 있다.

 

 

3) 이베이코리아(G마켓, 옥션): 오히려 Risk가 아닐까?

이베이코리아는 2020년당시 매출액 1조3천억 영업이익은 850억에 해당하는 사업성과를 이뤄냈다. 특히 16년 연속 영업흑자라고 할만큼 어느정도 이커머스의 고객을 lock-in한 것 같다. 다만, 시장이 커진거에비해서 이베이코리아는 거의 못큰것처럼보이는데, 쿠팡과 네이버와 같은 거물급 온라인커머스를 대표하면서, 이베이코리아의 입지가 줄어든 것이다. 이베이코리아는 G마켓 옥션을 가지고있는데, 수수료로 10%을 매추로잡는다. 이마트가 이베이+슥닥컴의 수수료를 10%먹는다면, 약 2조원의 매출액이 생긴다. *문제는 그럼에도 불구하고 쓱닷컴이 적자인 회사라 이베이코리와와 잘 융합하지 못하면, 3.4조원에 인수한 이베이코리아가 이마트의 허리를 흔들어 버릴수도있을 것 같다. 그리고, 이베이코리아가 생각보다 비싸게 매수하는 것아닌가 싶다.

 

관련기사: https://www.hellot.net/news/article.html?no=59239

 

 

 

 

 

 

 

 

반응형

반응형

요약

 

  • Clique: "가능한 가장 많은 노드들이 fully connected(=complete graph)로 연결된 undirected network". 
  • k-plex: clique의 n-1에 해당하는 엣지의수 n-k로 일반화하여 조금 완화한 개념
  • k-core: 각각의 노드들이 적어도 k에 연결되어있어야 하는 서브그레프
  • k-clique: k개의 노드로 구성되어있는 clique

 


 

특징

 

  1. maximal의 의미는 다른 가능한 많은 노드들이 최대한 많이 연결된 상태를 의미한다. (=더 clique로 추가 될만한 노드가 없는 경우 = fully connected 로 연결할 수 있는 노드가 없는 경우)
  2. Clique은 서로 겹칠 수 있으며, 이는 한 노드(vertice)가 다른 clique에 포함될 수 있음을 의미한다.
  3. Sparse network(서로서로 잘 연결되어있지 않는 네트웍)에서의 Clique의 존재는 어떤 응집력이 매우 좋은 집단이 있음을 의미한다. 예를 들어, 소셜 네트워크의 경우도, 대부분이 fully connected로 잘 연결되어있지 않고, 어쩌다 연결되고, 일부 연결되어있는 사람들끼리서는 다 연결되어있는 친목그룹따위가 존재한다. 
  4. Clique을 구성하는 노드가 N개인경우 N-1개의 edge가 존재한다.

 

 


설명 및 예시

 

1. Maximal: 아래와 같이 4개의 노드(vertices)가 fully connected로 되어있고 (서로 연결), 이 4개외에는 fully connected로 연결해볼만한 노드가 더이상 없다.

Clique: 4개의 노드들이 서로 연결되어있는 경우(=더이상 추가할 노드가 없는 경우). 예를 들어 5시 방향에 있는 노드는 3시방향 6시방향의 노드와 연결되어있지만, 12시, 9시 방향의 노드와는 연결되어있지 않다.

 

2. Clique내 노드끼리는 겹칠 수 있다. clique내의 서브그레프도 하나의 clique라는 것을 의미하지 않고, 여러 clique내에 노드가 겹칠 수 있음을 의미한다. 예를 들어, 아래를 보면 A-B를 기점으로 clique가 2개로 될 수 있다. 그리고, 노드A와 B는 서로 각각 clique에 해당한다.

 

 


k-plex: k-plex은 clique(competed graph)의 모두 연결되어있어야하는 조건을 완화한 개념이다. 위에서 clique은 모든 노드들이 연결되어있어야한다고 했고, 이 경우는 n-1개의 연결(엣지)가 존재한다고 했다. k-plex은 여기어 n-1의 엣지수를 n-k로 일반화하여 조금 완화한 개념이라고 보면 이해가 직관적이다. 보통 "k plex of size n"을 의미하는데, 네트워크 안에 있는 n개의 노드중 적어도 n-k가 fully connected 되어있음을 의미한다. 예) k=1일 경우, 일반적인 clique와 동일한 의미를 갖는다. k=2인 경우는 적어도 vertex들이 다 연결되어있거나, 모든 노드들이 하나에만 연결되어있어야함을 의미한다. 

 

 

아래의 예시는 1-plex을 의미한다. 우선 모든 V1,V2,V3,V4가 모두 각각에 연결되어 clique이다. 그리고, n-k(=|V|(vertex 수 -1)은 3이므로, 각각 모든 노드가 3개의 엣지를 가지면 되는지 확인하면된다. V1,V2,V3,V4가 각각 3개의 노드를 가지므로 1-plex도 된다. 따라서, 1-plex = clique이다. 

Clique 이자 1-plex

 

 

다음은 몇-plex일까? 답은 2-plex. 우선 fully connected가 아니기 때문에 clique은 아니다. 즉, 1-plex은 아니라는 것이다. 2-plex일까? |V|(=n)은 5이고 각V1 ,V2은 3개의 엣지를 갖는다. 2-plex가 되려면, 모든 노드들이 5-2개의 엣지를 가져야한다. 그러나 V3, V4, V5은 2개씩의 엣지를 갖는다. 즉 2-plex도 아니다. 그러나, 이 그레프는 각 노드들이 최소 2개의 엣지를 갖는다. 이를 표현하면 $\delta(G)=2$라고 보통 표기한다. 따라서, 2>=5-k라는 수식을 두면, 가능한 k는 3,4,5가된다.

k-core : k-plex와 유사한 컨셉은 k-core라는 것이 있다. k-core은 k-plex와 마찬가지로 "maximal subset of vertice"으로 각각의 노드들이 적어도 k에 연결되어있어야하는 것이다. 예를 들어, 5개의 노드로 구성된 2-core는 (5-2)-plex와 같다. k-core와 k-plex와의 차니는 k-cores은 겹치는 것이 없다. k-cores의 장점은 적어도 k의 연결이 있어야하기에, 반대로 k-1개 이하의 엣지를 가진 노드를을 찾아 없애면되니, 상대적으로 k의 수를 알기가 쉬워 실용적인 분석이 될 수 있다.

* 그리고 k-core은 원래 그레프 G의 서브그레프 중에 유일한 서브그레프가 된다.

 

 

k-clique : 유사한 명명으로 되는 그레프 중에, k-clique가 있으며, 이는 한 노드에서 다른 노드로 최대 k개 이상의의 거리가 없는 경우의 "maximal subset" 을 의미한다. 만일 k=1이라면, clqiue랑 동일하다. 즉 모든 노드가 1개 이하의 거리를 갖는다. 만일 k가 커지면, 점점 그레프가 커지는거고 그레프의 최대 거리가 커지는 것을 의미한다. 이 개념이 다른 설명서에는 clique with k vertices라고 소개가 되는 경우도 있는데, k=3이면 3개의 노드로 이루어진 clique가 된다.

2-clique의 예시

아래를 참고하면 쉬운 영상이 있다.

https://www.youtube.com/watch?v=V2CgqTLWxvY

반응형

Summary: set, dict은 해시함수를 이용한 해시값을 저장하고있는 해시테이블이란 자료구조를 사용하기 때문에, 빠른 탐색이 가능함. 해시는 임의의 변수(문자열 등)를 숫자로 변환하여, 매핑하는 것을 의미함. 따라서, 임의의 변수가 오더라도 숫자로 매핑할 수 있고, 이 숫자로 매핑한 경우 인덱스처럼 사용할 수 있어 빠른 검색이 가능함.

 

 

해시함수를 이용한 해시값으로 매핑 예시. (ref: https://modeling-languages.com/robust-hashing-models/)

 

 

도입: 파이썬으로 자료를 저장하다보면 많은 양의 데이터를 저장해야하는 경우가 있다. 가령, 유전정보와 같이 1번 유전자의 100번째의 위치의 DNA가 바뀌었는지 여부 뿐만아니라... 101번, 10,000,000번째의 위치가 변경되었는지, 변경되었으면 무엇으로 변경되었는지 저장한다. 문제는 이렇게 많은 정보를 저장한 것을 읽어, 특정위치(Input으로 주어지는 위치)에 변이가 있었는지 찾아야한다면? 많은 연산을 해야할 것이다. 

 

 

 


해시란(hash)?

해시는 임의의 길이를 갖는 임이의 데이터를 고정된 길이의 데이터로 매핑하는 함수를 말한다. 쉽게 말해서, 입력값을 아무거나 넣더라도, 각기 다른 출력값을 반환하는 것이다(단, 출력값의 길이는 동일 // 입력값을 동일하게 할경우 출력값은 일관성 있게 동일). 예를 들어, 가장 쉬운 해시는 mod 연산이다. mod k 연산은 어떤 숫자를 k로 나눴을 때 나머지를 구하는 연산인데 이를 통해 해시를 구현할 수 있다. 아래의 예시와 같이 임의의 숫자 13, 3, 14, 23, 22를 7로 나눠 각각 나머지를 구했다. 이런식으로 각각 원소인 13을 6으로 매핑, 3을 3으로 매핑 14을 0으로 매핑하는 것처럼 원래 데이터를 매핑하는 것을 의미한다.

 

 

mod 7 (13) A -> G
mod 7 (3) G -> A
mod 7 (14) 0 T -> C
mod 7 (23) 2 C - > T
mod 7 (22) 1 C -> T

(Table 1. mod 7 연산의 결과)

 

 

 

그런 다음에, 6을 인덱스로 해서 "A->G"라는 데이터를 저장하고, 3에 "G->A"라는 것을 저장하듯 모든 배열을 위와같이 저장한다. 그러면, 14의 내용이 무엇인지 찾고자할때, 13, 3, 14, 23, 22의 중에 14를 찾아서 따라가는 것이 아니라, 1) 14을 mod 7 (14)을 해서, 0을 얻은다음, 2) 0의 인덱스에 무엇이 저장되어있는지 확인하면 된다. 이런 방법으로하면, 상당히 긴 배열에서도 13=14냐? 3=14이냐? 23이 23이냐?? 모두 1:1로 비교하는 방법(선형탐색)을 하지 않고, 바로 검색을 할 수 있다. 이 이유가 hash를 쓰는 이유이다. 

A -> G
G -> A
0 T -> C
2 C - > T
1 C -> T

 

 

그리고, 우리는 위의 6, 3, 0, 2, 1과 같은 값들을 해시값(hash value) 또는 다이제스트(Digest)라고 부르고, 해시값과 저장되어있는 값("A->G", "G-A"...)와 같이 위의 정보를 테이블형태로 저장하고 있는 자료구조를 해시테이블(hash table)이라고 한다.

 

 

 


Hash collision: 혹시나 해시값이 중복이면 어떻게되나?

 

해시충돌의 경우는 아래와 같다. 아래처럼 14의 값과 21을 해시함수 mod 7을 했을 경우 결과값(해시값)이 동일하다. 이 경우는 해시값이 중복인 경우 (예, 0인 경우), 14에서 부터 해시값이 나온건지 21에서부터 해시값이 0이 나온것인지 구분이 필요하다.

 

 

mod 7 (13) A -> G
mod 7 (3) G -> A
mod 7 (14) 0 T -> C
mod 7 (23) 2 C - > T
mod 7 (22) 1 C -> T
mod 7 (21) 0 T -> A

 

 

위의 예시만 봐도, 위의 mod 함수를 해시함수로 쓰는 경우 해시값(output)의 충돌은 발생한다. 가장 좋은 건 해시함수를 좋은 해시함수(결과물의 충돌이 거의 없는 함수)를 쓰는 것이 좋다. 그러나, 좋은 해시함수를 쓰더라도, 해시충돌이 발생할 확률은 언제나 존재한다. 이 원인에 대한 직관적인 이해는 비둘기집의 원리와 같다. 

 

비둘기집의 원리: "차량등록번호", "휴대전화번호"처럼 차량수/휴대전화가가 등록할수 있는 번호의 개수를 초과하는 경우와 같은 원리. 비둘기집이 9개가 있고, 각 비둘기집에는 한 마리씩 비둘기가 있을 수 있다고 가정해보자. 만일 비둘기가 10마리가 있다면 어떻게될까? 9개의 집 중, 하나는 두마리가 들어가야한다. 마찬가지로 "고정길이 문자열을 반환하는 해시값은 유한하다. 따라서, 임의의 가변길이 문자열의 개수 > 반환할 수 있는 고정길이 문자열이기에, 겹칠 수 있다"는 말이다. 예를 들어, 영어 알파뱃 26개인데 정보를 10개의 고정길이 문자열로 반환하는 해시함수를 만들었다고 하자. 해시함수가 반환할 수 있는 값은 26의 10제곱이다. 그러나 입력값을 0부터 ZZZZZZZZZZZZZZZZZZZZZ까지 엄청나게 많은 은 알파벳과 숫자의 조합이라면? 매핑할 수 있는 값의 종류가 모자르다.

 

Figure. Pigeons in holes.

자세한 내용은 아래를 참고하자 (https://en.wikipedia.org/wiki/Pigeonhole_principle)

따라서, 해시값이 충돌할 경우, 여러 방안이 존재한다. 체이닝, Open addressing (선형탐사, 제곱탐사, 이중해시).. 등 여러 방법이 존재한다. 가장 쉬운 예시는, 겹치는 해시값안에는 여러 변수를 일단 배열형태로 저장한 후에, 선형탐사하는 것이다. 일단 겹치는 경우, 저장하고 훨씬 적은 수를 선형탐사해서 찾겠다는 것과 같다.

 

 


Set, Dict 에서의 hash테이블: 파이썬의 set, dict자료구조는 해시테이블을 이용한다. 즉, dict의 key와 set의 원소를 x라한다면, hash(x)을 실행시켜 같으면 x원소가 반드시 존재한다는 것으로 활용할 수 있다. 아래는 set의 해시테이블을 직접 접근한 예시이다. 아래와 같이 파이썬의 내장함수는 해시함수를 제공하고 있다.

 

>>> hash
<function hash(obj, /)>

 

그리고, 파이썬의 객체는 hash함수값을 매직매서드로 가지고있다. 아래의 "a"라는 문자의 해시값은 "8870042888964940309"이다.

 

>>> "a".__hash__() 
8870042888964940309

 

그리고 set을 하나 만들어, 해시값을 소환해보자. set 내부에 해시테이블을 직접 접근하는 방법은 찾지 못했으나, 이와 유사하게 아래와같이 각 원소의 hash값을 알고있으면 이를 통해서 검색하면 매우 빠르다.

 

>>> myset = {"a", "b"}
>>> {element.__hash__() for element in myset}

{8703158610484096297, 8870042888964940309}

 

반응형

1. 지배구조
2019면에 코웨이홀딩스가 가지고 있다가, 웅진이 다시 사드렸고 2020년에 웅진이 어려워지면서 넷마블이 사들여, 넷마블이 최대주주가 되었다. 넷마블 입장에서는 엄청난 캐시카우가 들어온샘인데, 아래는 넷마블이 주장하는 코웨이와 넷마블의 시너지이다.

개인적인 평으로 할 수 있는게 매우 많진 않아보인다. AI 빅데이터 클라우드, 데이터분석은 툴이고(how), 어떤 가치를 더 주어서 고객이 지갑을 열지(what)이 없다.


코웨이 이하 연결대상 회사는 총 9개에서 12개로 늘었다. Coway japan, coway europe, 아이오베드라는 회사를 신규 출자해서 설립하거나, 인수하면서 총 12개가 되었다.

2. 회사의 신용도
회사의 신용도는 과거 2019년 A2+에서 2021년 8월 현재 AA-까지 계속 신용도가 상승하고 있다.


2. 메인 비지니스
방문판매업과먹는물관리법하에 정수기와 가정용 기기(여기서는 에어컨, 침대 등도 포함되는 모든 기기 인듯 하다)을 판매하고 있다.
2021년 6월말 현재 국내 기준 약 641만의 렌탈 및 멤버쉽 계정이 있는데, 가정뿐만아니라 법인등 매우 많은 렌탈기기 판매가 이뤄지고있다.

사업부문은 크게 3가지로 1) 렌탈, 2) 일시불, 3) 기타 부문으로 이뤄지고 있다. 무엇을 렌탈할지로 구분하는게 아니라 구독/비구독으로 사업부분을 나눠놓았다.

부품의 국산화에 성공하여 대부분 국내에서 조달하고 있으며, 필터 자동생산라인도 갖추고 있다고하는데, 주요 매입 원재료로는 PBA 아세이, 컴프레샤 등.. 유구공장, 인천공장, 포천공장 등에서 생산중이다.

현재는 국내뿐만 아니라 말레이시아, 미국, 중국, 태국, 인도네시아, 베트남, 일본, 유럽까지 사업영역을 확장하고있으며, 연결회사들이 사업확장에 따른 법인으로 보인다



코로나 19로, 말레이시아 사업확장에 브레이크가 걸린 코웨이. 다시 재동은?

 


성장동력은?

 


각사업부별 실적은?

 

 

 

반응형

+ Recent posts