整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          如何可視化BERT?你需要先理解神經(jīng)網(wǎng)絡(luò)的語(yǔ)言、樹(shù)和

          如何可視化BERT?你需要先理解神經(jīng)網(wǎng)絡(luò)的語(yǔ)言、樹(shù)和幾何性質(zhì)

          ERT 是當(dāng)前最佳的自然語(yǔ)言處理模型之一,也因此極其復(fù)雜。Google AI 的 People + AI Research(PAIR)團(tuán)隊(duì)近日發(fā)布的論文《Visualizing and Measuring the Geometry of BERT》提出了一種可視化和度量 BERT 的幾何性質(zhì)的方法,可幫助我們理解 BERT 等神經(jīng)網(wǎng)絡(luò)語(yǔ)言模型表征信息的方式。該團(tuán)隊(duì)在發(fā)布論文后還會(huì)發(fā)布一系列解釋說(shuō)明文章,目前公布的第一篇介紹了神經(jīng)網(wǎng)絡(luò)中的語(yǔ)言、樹(shù)和幾何性質(zhì)。機(jī)器之心對(duì)該文章進(jìn)行了編譯介紹,更多詳情請(qǐng)參閱原論文。

          • 論文:https://arxiv.org/pdf/1906.02715.pdf
          • 博客:https://pair-code.github.io/interpretability/bert-tree/

          語(yǔ)言的結(jié)構(gòu)是離散的,而神經(jīng)網(wǎng)絡(luò)則基于連續(xù)數(shù)據(jù)運(yùn)作:高維空間中的向量。成功的語(yǔ)言處理網(wǎng)絡(luò)必須要能將語(yǔ)言的符號(hào)信息轉(zhuǎn)譯為某種幾何表征——但是這種表征該是怎樣的形式呢?詞嵌入提供了兩種著名的示例:用距離編碼語(yǔ)義相似度,特定的方向則對(duì)應(yīng)于極性(比如男性與女性)。

          近段時(shí)間,一個(gè)激動(dòng)人心的發(fā)現(xiàn)帶來(lái)了一種全新類型的表征方式。關(guān)于一個(gè)句子的語(yǔ)言信息中,一大關(guān)鍵部分是其句法結(jié)構(gòu)。這種結(jié)構(gòu)可以表示成樹(shù),其節(jié)點(diǎn)對(duì)應(yīng)于句子的詞。Hewitt 和 Manning 在論文《A Structural Probe for Finding Syntax in Word Representations》中表明某些語(yǔ)言處理網(wǎng)絡(luò)能夠構(gòu)建這種句法樹(shù)的幾何副本。詞是通過(guò)在一個(gè)高維空間的位置給定的,而(遵照一定的變換)這些位置之間的歐幾里德距離映射了樹(shù)距離。

          但這一發(fā)現(xiàn)還伴隨著一個(gè)很有趣的謎題。樹(shù)距離與歐幾里德距離之間的映射不是線性的。相反,Hewitt 和 Manning 發(fā)現(xiàn)樹(shù)距離對(duì)應(yīng)于歐幾里德距離的平方。他們提出了疑問(wèn):為什么必需平方距離,是否存在其它可能的映射。

          這篇文章將為這個(gè)謎題提供一些潛在的解答。我們將從數(shù)學(xué)角度表明:樹(shù)的平方距離映射是尤其自然的。甚至某些隨機(jī)化的樹(shù)嵌入也將服從近似的平方距離定律。此外,只是知道平方距離關(guān)系,就能讓我們簡(jiǎn)單明確地描述樹(shù)嵌入的整體形狀。

          我們會(huì)在一個(gè)網(wǎng)絡(luò)(BERT)中分析和可視化真實(shí)世界的嵌入以及它們與其數(shù)學(xué)理想形式(mathematical idealizations)的系統(tǒng)性差異,以對(duì)這些幾何論點(diǎn)進(jìn)行補(bǔ)充說(shuō)明。這些實(shí)證研究將提供用于思考神經(jīng)網(wǎng)絡(luò)中句法表征的新的定量方法。

          從理論上解讀樹(shù)嵌入

          如果你要將一個(gè)樹(shù)(tree)嵌入到歐幾里德空間中,為什么不直接將樹(shù)距離對(duì)應(yīng)于歐幾里德距離呢?一個(gè)原因是:如果這個(gè)樹(shù)有分支,則無(wú)法實(shí)現(xiàn)等距離擴(kuò)展。

          圖 1:你無(wú)法在保證距離不變的同時(shí)將這個(gè)樹(shù)嵌入到歐幾里德空間中

          事實(shí)上,圖 1 中的樹(shù)就是一個(gè)標(biāo)準(zhǔn)示例,表明并非所有度量空間都可以等距離地嵌入到 R^n 中。因?yàn)?d(A,B)=d(A,X)+d(X,B),所以在任意嵌入中 A、X 和 B 都是共線的。基于同一邏輯,A、X 和 C 也是共線的。但這就意味著 B=C,這是矛盾的。

          如果一個(gè)樹(shù)包含分支,則其將包含該配置的一個(gè)副本,也無(wú)法以等距離的方式嵌入。

          畢達(dá)哥拉斯嵌入(Pythagorean embeddings)

          相反,平方距離嵌入實(shí)際上要好得多——它是如此好用以至于有專屬名稱。這個(gè)名字的來(lái)由將在后面介紹。

          定義:畢達(dá)哥拉斯嵌入

          令 M 為一個(gè)度量空間,其度量為 d。如果對(duì)于所有 x,y∈M,我們有

          ,就說(shuō) f:M→R^n 為一個(gè)畢達(dá)哥拉斯嵌入。

          圖 1 中的樹(shù)有畢達(dá)哥拉斯嵌入嗎?有的:如圖 2 所示,我們可以將各個(gè)點(diǎn)分配到一個(gè)單位正方體的鄰近頂點(diǎn),畢達(dá)哥拉斯定理(即勾股定理)就能提供我們想要的結(jié)果。

          圖 2:在單位正方體的頂點(diǎn)上的一個(gè)簡(jiǎn)單畢達(dá)哥拉斯嵌入

          其它小型的樹(shù)又如何呢,比如四個(gè)頂點(diǎn)構(gòu)成的鏈?這也能在正方體的頂點(diǎn)中有很好的畢達(dá)哥拉斯嵌入。

          圖 3:四個(gè)頂點(diǎn)構(gòu)成的鏈也有在單位正方體的頂點(diǎn)上的畢達(dá)哥拉斯嵌入

          這兩個(gè)示例都不是偶然例外。實(shí)際上我們能明確地直接寫出任何樹(shù)在單位超立方體的頂點(diǎn)上的畢達(dá)哥拉斯嵌入。

          定理 1.1

          任何有 n 個(gè)節(jié)點(diǎn)的樹(shù)都有在 R^(n-1) 中的畢達(dá)哥拉斯嵌入。

          證明。

          注:我們注意到與定理 1.1 的證明相似的論據(jù)也出現(xiàn)在 Hiroshi Maehara 的「有限度量空間的歐幾里德嵌入」中:https://doi.org/10.1016/j.disc.2013.08.029

          令樹(shù) T 的節(jié)點(diǎn)為 t_0,...,t_(n?1),其中 t_0 為根節(jié)點(diǎn)。令 {e_1,...,e_(n?1)} 為 R^(n-1) 的正交單位基向量。經(jīng)過(guò)歸納,定義一個(gè)嵌入 f:T→R^(n?1):

          給定兩個(gè)不同的樹(shù)節(jié)點(diǎn) x 和 y,m 是它們的樹(shù)距離 d(x,y),則我們可使用 m 個(gè)互相垂直的單位步從 f(x) 移動(dòng)到 f(y),因此:

          看待這種構(gòu)建方式的一個(gè)角度是:我們?yōu)槊織l邊分配了一個(gè)基向量。為了得到節(jié)點(diǎn)的嵌入,我們走回到根并將我們經(jīng)過(guò)的邊的所有向量加起來(lái)。見(jiàn)下圖。

          圖 4:左:將基向量分配給邊。中:兩個(gè)示例嵌入。右:平方的距離等于樹(shù)距離。

          備注

          這個(gè)證明的價(jià)值不只是證明存在這個(gè)結(jié)果,而且是在明確的幾何構(gòu)建中存在這個(gè)結(jié)果。同一個(gè)樹(shù)的任何兩個(gè)畢達(dá)哥拉斯嵌入都是等距離的——而且通過(guò)旋轉(zhuǎn)或反射而存在關(guān)聯(lián),因?yàn)閮烧咧兴悬c(diǎn)對(duì)之間的距離都一樣。所以我們說(shuō)對(duì)于樹(shù)的畢達(dá)哥拉斯嵌入,該定理向我們說(shuō)明了其確切模樣。

          此外,定理 1.1 中的嵌入也有一個(gè)清晰的非形式化的描述:在圖的每個(gè)嵌入頂點(diǎn),所有連接鄰近頂點(diǎn)的線段都是單位長(zhǎng)度的線段,且與彼此和其它每條邊線段正交。看一下圖 1 和圖 2 就能發(fā)現(xiàn)它們滿足這種描述。

          也可以輕松地看到,證明中構(gòu)建的特定嵌入是一個(gè) ?1 度量的樹(shù)等距映射(tree isometry),盡管這非常依賴于軸對(duì)齊。

          我們也可以對(duì)定理 1.1 進(jìn)行略微的泛化。考慮邊有權(quán)重的樹(shù),兩個(gè)節(jié)點(diǎn)之間的距離是它們之間的最短路徑上邊的權(quán)重的和。在這種情況下,我們也總是可以創(chuàng)建畢達(dá)哥拉斯嵌入。

          定理 1.2

          任何有 n 個(gè)節(jié)點(diǎn)的加權(quán)的樹(shù)都有在 R^(n-1) 中的畢達(dá)哥拉斯嵌入。

          證明。

          和前面一樣,令樹(shù) T 的節(jié)點(diǎn)為 t_0,...,t_(n?1),其中 t_0 為根節(jié)點(diǎn)。令 {e_1,...,e_(n?1)} 為 R^(n-1) 的正交單位基向量。現(xiàn)在令 w_i=d(t_i,parent(t_i))。經(jīng)過(guò)歸納,定義嵌入 f 為:

          注:定理 1.2 的嵌入不再位于單位超立方體上,而是在其一個(gè)壓扁的版本中:邊長(zhǎng)為

          的實(shí)體,這些邊的長(zhǎng)度有長(zhǎng)有短。

          我們可以索引這個(gè)樹(shù)的邊,其中每條邊的索引都與在該邊上的子節(jié)點(diǎn)一樣。令 P 為 x 與 y 之間的最短路徑上邊的索引的集合,則

          定理 1.2 中嵌入雖然是軸對(duì)齊的,但在 ?1 度量方面不再是等距離映射。但是,如果我們使用向量 w_ie_i 而不是

          ,那么我們就可以恢復(fù) ?1 等距離映射。

          其它嵌入和缺乏嵌入的情況

          Hewitt 和 Manning 問(wèn)是否還有其它有效的樹(shù)嵌入類型,也許是基于歐幾里德度量的其它冪。我們可以提供一些有關(guān)這些嵌入的部分結(jié)論。

          定義

          令 M 為一個(gè)度量空間,其度量為 d。設(shè)如果對(duì)于所有的 x,y∈M,都有

          ,則我們說(shuō) f:M→R^n 是冪為 p 的嵌入。

          注:對(duì)于歐幾里德空間中的嵌入的一般性問(wèn)題的更多解釋,請(qǐng)參閱這篇漂亮的概述:https://arxiv.org/pdf/1502.02816.pdf 和這個(gè)有用的書(shū)籍章節(jié):http://www.csun.edu/~ctoth/Handbook/chap8.pdf

          雖然使用的名字各不相同,但一般度量空間的冪為 p 的嵌入已被研究了數(shù)十年。這方面的奠基工作是 Schoenberg 1937 年的論文:https://www.jstor.org/stable/1968835。該論文的一個(gè)關(guān)鍵結(jié)果用我們的術(shù)語(yǔ)說(shuō)來(lái)就是:如果一個(gè)度量空間 X 有在 R^n 中的冪為 p 的嵌入,那么對(duì)于任意 q>p,它也有冪為 q 的嵌入。因此當(dāng) p>2 時(shí),任意樹(shù)都總是有冪為 p 的嵌入。而 p=2 的情況則很不一樣,我們還沒(méi)有一種用于描述這種嵌入的幾何性質(zhì)的簡(jiǎn)單方法。

          另一方面,當(dāng) p<2 時(shí),事實(shí)證明冪為 p 的樹(shù)嵌入甚至不一定存在。

          定理 2

          對(duì)于任意 p<2,存在「沒(méi)有冪為 p 的嵌入」的樹(shù)。

          證明過(guò)程請(qǐng)參閱我們的論文(這里也有另一個(gè)證明:https://www.sciencedirect.com/science/article/pii/S0012365X13003841)。總結(jié)來(lái)說(shuō),對(duì)于任意給定的 p<2,沒(méi)有足夠的「空間」來(lái)嵌入帶有足夠多子節(jié)點(diǎn)的節(jié)點(diǎn)。

          隨機(jī)分支的嵌入近似為畢達(dá)哥拉斯嵌入

          畢達(dá)哥拉斯嵌入的性質(zhì)非常穩(wěn)健,至少在維度遠(yuǎn)大于樹(shù)規(guī)模的空間中是這樣。(舉個(gè)例子,這就是我們的語(yǔ)言處理神經(jīng)網(wǎng)絡(luò)的激勵(lì)示例的情況。)在上面的證明中,除了使用基向量 e_1,...,e_(n?1) ∈R^(n?1),我們本可以從 R^m 的單元高斯分布中完全隨機(jī)地選出 n 個(gè)向量。如果 m?n,那么結(jié)果有很高的可能性會(huì)是近似的畢達(dá)哥拉斯嵌入。

          原因是在高維空間中,(1)來(lái)自單位高斯分布的向量的長(zhǎng)度有很高的可能性非常接近于 1;(2)當(dāng) m?n 時(shí),一組 n 個(gè)單位高斯向量將很有可能接近于彼此正交。

          換句話說(shuō),在足夠高維度的空間中,樹(shù)的隨機(jī)分支的嵌入(其中每個(gè)子節(jié)點(diǎn)都與其父節(jié)點(diǎn)偏移一個(gè)隨機(jī)的單位高斯向量)將接近于畢達(dá)哥拉斯嵌入。

          這種構(gòu)建甚至可以通過(guò)一個(gè)迭代過(guò)程完成,僅需「局部」信息。使用完全隨機(jī)的樹(shù)嵌入進(jìn)行初始化,再為每個(gè)頂點(diǎn)選取一個(gè)特殊的隨機(jī)向量;然后在每個(gè)步驟移動(dòng)每個(gè)子節(jié)點(diǎn),使其更靠近其父節(jié)點(diǎn)加該子節(jié)點(diǎn)的特殊向量。其結(jié)果會(huì)是近似的畢達(dá)哥拉斯嵌入。

          畢達(dá)哥拉斯嵌入很簡(jiǎn)潔,而且它們?cè)醋跃植侩S機(jī)模型,這說(shuō)明它們?cè)诒碚鳂?shù)方面可能是普遍有效的。要注意,樹(shù)的大小受場(chǎng)景的維度所控制,它們也許是基于雙曲幾何的方法的低技術(shù)替代方法。

          注:更多有關(guān)雙曲樹(shù)表征的知識(shí)請(qǐng)參閱《Hyperbolic Embeddings with a Hopefully Right Amount of Hyperbole》:https://dawn.cs.stanford.edu/2018/03/19/hyperbolics/ 或 Nickel & Kiela 的《Poincaré Embeddings for Learning Hierarchical Representations》:https://arxiv.org/abs/1705.08039

          實(shí)踐中的樹(shù)嵌入

          我們已描述了樹(shù)嵌入的數(shù)學(xué)理想形式,現(xiàn)在回到神經(jīng)網(wǎng)絡(luò)世界。

          我們研究的對(duì)象是 BERT 模型,這是近期一種針對(duì)自然語(yǔ)言處理的成功模型。我們對(duì)這一模型感興趣的一大原因是其在很多不同任務(wù)上都表現(xiàn)優(yōu)良,這說(shuō)明其能夠提取出普遍有用的語(yǔ)言特征。BERT 基于 Transformer 架構(gòu)。

          注:BERT 背景:這是谷歌博客的介紹:https://ai.googleblog.com/2018/11/open-sourcing-bert-state-of-art-pre.html ;這里還有一篇很棒的總結(jié):https://towardsdatascience.com/bert-explained-state-of-the-art-language-model-for-nlp-f8b21a9b6270。還有很多論文分析了這些網(wǎng)絡(luò),比如《BERT Rediscovers the Classical NLP Pipeline》:https://arxiv.org/abs/1905.05950。

          我們這里不會(huì)詳細(xì)描述 BERT 架構(gòu),只是簡(jiǎn)單說(shuō)一下該網(wǎng)絡(luò)的輸入是詞序列,經(jīng)過(guò)一系列層之后能為其中每個(gè)詞得到一系列嵌入。因?yàn)檫@些嵌入考慮了上下文,所以它們常被稱為上下文嵌入(context embedding)。

          人們已經(jīng)提出了很多描述句法結(jié)構(gòu)的方法。在依存語(yǔ)法中,每個(gè)詞都是樹(shù)的一個(gè)節(jié)點(diǎn),如下圖所示。

          很多人都研究過(guò)這些嵌入,以了解它們可能包含什么信息。概括來(lái)說(shuō),我們研究樹(shù)嵌入的動(dòng)機(jī)是 Hewitt 和 Manning 的近期成果。他們的論文《A Structural Probe for Finding Syntax in Word Representations》表明上下文嵌入似乎以幾何方式編碼了依存解析樹(shù)。

          但有一點(diǎn)要注意:首先你需要通過(guò)一個(gè)特定的矩陣 B(即所謂的結(jié)構(gòu)探針(structural probe))對(duì)這個(gè)上下文嵌入進(jìn)行變換。但在此之后,兩個(gè)詞的上下文嵌入之間的歐幾里德距離的平方接近兩個(gè)詞之間的解析樹(shù)距離。這就是前一節(jié)的數(shù)學(xué)計(jì)算發(fā)揮功效的地方。用我們的術(shù)語(yǔ)說(shuō),這個(gè)上下文嵌入接近一個(gè)句子的依存解析樹(shù)的畢達(dá)哥拉斯嵌入。這意味我們對(duì)樹(shù)嵌入整體形狀有很好的認(rèn)知——就是簡(jiǎn)單地源自平方距離性質(zhì)和定理 1.1。

          可視化和測(cè)量解析樹(shù)表征

          當(dāng)然,我們并不確切知曉其形狀,因?yàn)樵撉度胫皇墙频漠呥_(dá)哥拉斯嵌入。但理想形狀和實(shí)際形狀之間的差異可能非常有趣。實(shí)驗(yàn)中的嵌入和它們的數(shù)學(xué)理想形式之間的系統(tǒng)性差異可能能為 BERT 處理語(yǔ)言的方式提供進(jìn)一步的線索。

          注:PCA 能得到比 t-SNE 或 UMAP 更可讀的可視化。當(dāng)點(diǎn)在一個(gè)低維流形上聚類或分散時(shí),非線性方法的效果可能最好——基本上與 n-立方體的頂點(diǎn)相反。

          為了研究這些差異,我們創(chuàng)造了一種可視化工具。我們的論文給出了詳細(xì)情況,這里只提供些概述。該工具的輸入是帶有相關(guān)的依存解析樹(shù)的句子。該軟件會(huì)從 BERT 提取出該句子的上下文嵌入,經(jīng)過(guò) Hewitt 和 Manning 的「結(jié)構(gòu)探針」矩陣的變換,得到一個(gè)在 1024 維空間中的點(diǎn)集。

          然后,我們通過(guò) PCA 將這些點(diǎn)映射到二維。為了展現(xiàn)其底層的樹(shù)結(jié)構(gòu),我們連接了表示有依存關(guān)系的詞的點(diǎn)對(duì)。下圖 5 展示了一個(gè)樣本句子的結(jié)果。為了比較,還給出了一個(gè)精確畢達(dá)哥拉斯嵌入、隨機(jī)分支的嵌入、節(jié)點(diǎn)坐標(biāo)完全隨機(jī)的嵌入的相同數(shù)據(jù)的 PCA 投影。

          圖 5:PCA 視圖。a)BERT 解析樹(shù)嵌入。b)精確畢達(dá)哥拉斯嵌入。c)不同的隨機(jī)分支嵌入。d)節(jié)點(diǎn)位置是隨機(jī)地獨(dú)立選擇的不同嵌入。該圖的交互式版本請(qǐng)?jiān)L問(wèn)原文。

          PCA 投影已經(jīng)很有趣了——BERT 嵌入和理想形式之間有明顯的相似性。圖 5c 展示了一系列隨機(jī)分支的嵌入,也類似于 BERT 嵌入。圖 5d 是基線,展示了一系列詞是隨機(jī)地獨(dú)立放置的嵌入。

          但我們還可以更進(jìn)一步,展示嵌入不同于理想模型的方式。在下面的圖 6 中,每條邊的顏色表示歐幾里德距離與樹(shù)距離之間的差。我們也用虛線連接了沒(méi)有依存關(guān)系但位置(在 PCA 之前)比預(yù)期的近得多的詞對(duì)。

          圖 6:在應(yīng)用了 Hewitt-Manning 探針后兩個(gè)句子的嵌入的可視化。在每一對(duì)圖像中,左圖是傳統(tǒng)的解析樹(shù)試圖,但每個(gè)分支的豎直長(zhǎng)度表示嵌入距離。右圖是上下文嵌入的 PCA 投影,其中的顏色表示偏離預(yù)期距離的程度。該圖的交互式版本請(qǐng)?jiān)L問(wèn)原文。

          所得到的圖像既能讓我們看到樹(shù)嵌入的整體形狀,也能讓我們看到離真實(shí)畢達(dá)哥拉斯嵌入的偏離程度的細(xì)粒度信息。圖 6 給出了兩個(gè)示例。它們都是典型的情況,展示了一些常見(jiàn)的主題。圖中,橙色虛線連接了 part/of、same/as、sale/of。這個(gè)效果很有特點(diǎn),可以看到介詞嵌入的位置與它們所相關(guān)的詞出乎意料地近。我們還可以看到藍(lán)色標(biāo)示的兩個(gè)名詞之間的連接,這說(shuō)明它們比預(yù)期的更遠(yuǎn)——另一個(gè)常見(jiàn)模式。

          文末的圖 8 展示了這些可視化的更多示例,你可以進(jìn)一步查看這些模式。

          基于這些觀察,我們決定更系統(tǒng)地研究不同的依存關(guān)系將可能如何影響嵌入距離。回答這一問(wèn)題的一種方式是考慮一個(gè)大型句子集并測(cè)試詞對(duì)之間的平均距離是否與它們的句法關(guān)系存在任何關(guān)聯(lián)。我們使用一個(gè) Penn Treebank 句子集以及派生的解析樹(shù)執(zhí)行了這個(gè)實(shí)驗(yàn)。

          圖 7:給定的依存關(guān)系下,兩個(gè)詞之間的平方邊長(zhǎng)的平均

          圖 7 展示了這一實(shí)驗(yàn)的結(jié)果。結(jié)果表明每個(gè)依存關(guān)系的平均嵌入距離的變化范圍很大:從大約 1.2(compound : prt, advcl)到 2.5(mwe, parataxis, auxpass)。研究這些系統(tǒng)性差異的含義是很有趣的。或許也許使用加權(quán)的樹(shù),BERT 的句法表征有優(yōu)于普通依存語(yǔ)法的其它定量方面。

          總結(jié)

          神經(jīng)網(wǎng)絡(luò)表征語(yǔ)言信息的確切方式依然還是一個(gè)謎。但我們已經(jīng)開(kāi)始看到了有吸引力的線索。Hewitt 和 Manning 的近期研究為解析樹(shù)的直接的幾何表征提供了證據(jù)。他們發(fā)現(xiàn)了一種有趣的平方距離效應(yīng),我們認(rèn)為這反映了一種數(shù)學(xué)上自然的嵌入類型——這能為我們提供一種驚人完整的嵌入幾何思想。與此同時(shí),對(duì) BERT 中解析樹(shù)嵌入的實(shí)驗(yàn)研究表明可能還有更多知識(shí)有待發(fā)掘,還有在解析樹(shù)表征的更多定量方面有待探索。

          圖 8:其它解析樹(shù)示例;說(shuō)明見(jiàn)圖 6。該圖的交互式版本請(qǐng)?jiān)L問(wèn)原文。

          原文鏈接:https://pair-code.github.io/interpretability/bert-tree/

          者:前端下午茶 公號(hào) / SHERlocked93

          在下開(kāi)發(fā)中經(jīng)常碰到 offset、scroll、client 這幾個(gè)關(guān)鍵字,比如 offsetLeft、offsetHeight、scrollHeight、clientTop 什么的,每次都要各種實(shí)驗(yàn),這里總結(jié)一下,一勞永逸。

          首先兩張圖鎮(zhèn)樓,方便隨時(shí)翻閱

          1. offset

          offset 指偏移,包括這個(gè)元素在文檔中占用的所有顯示寬度,包括滾動(dòng)條、 padding、 border,不包括 overflow隱藏的部分

          1. offsetParent屬性返回一個(gè)對(duì)象的引用,這個(gè)對(duì)象是距離調(diào)用 offsetParent的父級(jí)元素中最近的(在包含層次中最靠近的),并且是已進(jìn)行過(guò)CSS定位的容器元素。如果這個(gè)容器元素未進(jìn)行CSS定位, 則 offsetParent屬性的取值為根元素的引用。
          2. 如果當(dāng)前元素的父級(jí)元素中沒(méi)有進(jìn)行CSS定位(position為 absolute/relative), offsetParent 為 body
          3. 如果當(dāng)前元素的父級(jí)元素中有CSS定位( position 為 absolute/relative), offsetParent 取父級(jí)中最近的元素
          4. obj.offsetWidth 指 obj 控件自身的絕對(duì)寬度,不包括因 overflow 而未顯示的部分,也就是其實(shí)際占據(jù)的寬度,整型,單位:像素。
          5. offsetWidth=border-width*2+ padding-left+ width+ padding-right
          6. obj.offsetHeight 指 obj 控件自身的絕對(duì)高度,不包括因 overflow 而未顯示的部分,也就是其實(shí)際占據(jù)的高度,整型,單位:像素。
          7. offsetHeight=border-width*2+ padding-top+ height+ padding-bottom
          8. obj.offsetTop 指 obj 相對(duì)于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算上側(cè)位置,整型,單位:像素。
          9. offsetTop=offsetParent的padding-top + 中間元素的offsetHeight + 當(dāng)前元素的margin-top
          10. obj.offsetLeft 指 obj 相對(duì)于版面或由 offsetParent 屬性指定的父坐標(biāo)的計(jì)算左側(cè)位置,整型,單位:像素。
          11. offsetLeft=offsetParent的padding-left + 中間元素的offsetWidth + 當(dāng)前元素的margin-left


          2. scroll

          scroll指滾動(dòng),包括這個(gè)元素沒(méi)顯示出來(lái)的實(shí)際寬度,包括 padding,不包括滾動(dòng)條、 border

          1. scrollHeight 獲取對(duì)象的滾動(dòng)高度,對(duì)象的實(shí)際高度;
          2. scrollLeft 設(shè)置或獲取位于對(duì)象左邊界和窗口中目前可見(jiàn)內(nèi)容的最左端之間的距離
          3. scrollTop 設(shè)置或獲取位于對(duì)象最頂端和窗口中可見(jiàn)內(nèi)容的最頂端之間的距離
          4. scrollWidth 獲取對(duì)象的滾動(dòng)寬度

          3. client

          client指元素本身的可視內(nèi)容,不包括 overflow被折疊起來(lái)的部分,不包括滾動(dòng)條、 border,包括 padding

          1. clientWidth 對(duì)象可見(jiàn)的寬度,不包括滾動(dòng)條等邊線,會(huì)隨窗口的顯示大小改變
          2. clientHeight 對(duì)象可見(jiàn)的高度
          3. clientTopclientLeft 這兩個(gè)返回的是元素周圍邊框的厚度,一般它的值就是0。因?yàn)闈L動(dòng)條不會(huì)出現(xiàn)在頂部或者左側(cè)

          書(shū)的筆畫(huà)由基本筆畫(huà)和復(fù)合筆畫(huà)組成。基本筆畫(huà)有橫、豎、撇、捺、折、鉤、點(diǎn)、提八種,每種又能分成若干種復(fù)合筆畫(huà)。每種筆國(guó)分別用在字的不同部位起著不同的作用,我們?cè)S多人寫字不是不認(rèn)真,不用勁,而是對(duì)筆畫(huà)的長(zhǎng)短、曲直以及它們?cè)谧种械木唧w用法認(rèn)識(shí)不清,所以不僅要求熟練書(shū)寫筆畫(huà),并且要牢記其在字中的具體用法。

          一、橫的分類及寫法

          字形如人,橫是胳膊,豎是身,“橫平豎直"是寫字的基本要求。橫畫(huà),尤其是長(zhǎng)橫,在字中起著控制和調(diào)節(jié)平衡的作用,往往是字的主筆。但它并不是絕對(duì)的水平,一般向右上有一定的傾斜度。橫一般分短橫和長(zhǎng)橫兩種:短橫直短而收斂,長(zhǎng)橫曲長(zhǎng)而放縱。

          短橫寫法:下筆稍頓,向右上行筆,行筆用力要充實(shí),不要輕飄,筆送到末端回鋒收筆。多用在字的上部或框內(nèi)。例如“三”的第一橫畫(huà)、“且”的中間兩橫。

          短橫如果寫在字的左邊常寫做右尖橫,寫在右邊常寫做左尖橫,例如“非”字。

          長(zhǎng)橫寫法:輕頓向右上傾斜寫出(角度約7" ),中部略輕,速度稍快,到末端稍頓回收。長(zhǎng)橫是字

          的橫梁,在字中起平衡作用,多做主筆。如“三”的第三橫畫(huà)。

          例:三且非主五五里生

          二、豎的分類及寫法

          豎畫(huà)是支撐整個(gè)字的支柱,是脊梁,決定著字的平穩(wěn),因此一定要寫的垂直挺拔。一般分為懸針豎

          和垂露豎兩種。

          1.懸針豎寫法:

          稍頓筆即向下均勻運(yùn)筆,速度由慢到快,最后迅速出鋒空收,呈針尖狀。其要領(lǐng)是:豎要垂直,粗細(xì)過(guò)渡要自然,鋒尖要正,力到鋒端。它一般多用在字的中部和右部,很少用在字的左邊。例如“什”的最后一豎。

          2.垂露豎寫法:上半部分同懸針豎,收筆處向右下方頓筆回收,成滴露狀。整個(gè)筆畫(huà),上下兩頭略粗,中間略細(xì),如立地鐵錐,給人以挺拔踏實(shí)、含蓄沉穩(wěn)之感。例如“作”的兩個(gè)豎畫(huà)。

          例:什川豐州作仆用開(kāi)

          三、橫豎組合:

          橫和豎是構(gòu)成方塊字的鋼筋骨架,它倆在字中常在一起搭配使用,在字中的位置不同,交接點(diǎn)也不相同。主要分為以下三種情況:

          1、“十字組合”:豎在橫中間穿過(guò),兩邊橫左右對(duì)稱,一般用在字的上邊或下半部分中間。

          例:土桌支圣木米

          2.“豎在橫右邊穿過(guò)組合”:豎畫(huà)在橫的右三分之二穿過(guò),這種組合常用在字的左偏旁,目的是給右邊的偏旁讓位。

          例:提理和物材料輕

          3.“橫畫(huà)在豎畫(huà)的右下方結(jié)尾式組合”:這種組合常表現(xiàn)為左豎寫到底,右下端是以橫畫(huà)結(jié)尾,一般右下端的橫畫(huà)應(yīng)該寫的比豎畫(huà)收筆略高一點(diǎn),不要平齊。

          例:

          準(zhǔn)在把牡怪性格勝肥

          撇捺筆畫(huà)的書(shū)寫練習(xí)

          撇畫(huà)捺畫(huà)左右傾斜,具有動(dòng)感,象字的翅膀,又象翩翩起舞舞動(dòng)的裙子,是字中最具有美感的筆畫(huà),所以要寫得舒展、飄逸一些,寫好撇畫(huà)和捺畫(huà)會(huì)能使整個(gè)字充滿生動(dòng)活潑之趣。下邊分別介紹撇畫(huà)和捺畫(huà)。

          一、撇畫(huà)的分類及寫法

          1.平撇:起筆向右下方頓筆后向左下方運(yùn)筆,筆勢(shì)較平,接近橫畫(huà),宜短而平,多用在字的頂端第一筆。

          例:斤后未采愛(ài)

          2.斜撇:起筆向右下方向頓筆,而后向左下方運(yùn)筆,筆力由重到輕,速度由慢而快,提筆出鋒,力送筆端,與水平面約呈45度角,路有弧度。

          例:個(gè)未今金食

          3、豎撇:起筆同豎, 行筆過(guò)了一半后,再緩緩向左下方轉(zhuǎn)彎提筆撇出。運(yùn)筆上慢下快,外形上直下斜。例如“月”字第一筆。

          豎撇一般用在字的兩個(gè)部位,一是用在字的左側(cè),例如“斤”字二是用在與橫畫(huà)搭配時(shí),即撇垂

          直穿過(guò)橫畫(huà)后再向左下方提筆撇出。例如“大”字。

          例:斤大夫夾月

          二、捺的分類及寫法

          1.斜撩:落筆較輕,服勢(shì)向右下方約45度角方向行筆,邊行邊按,由輕到重至底端稍用力頓筆,后再由重到輕向右水平方向提筆出鋒。要求寫的解展流暢, 體現(xiàn)一被三折. 例如“人“第二筆。

          例:人支全令金會(huì)合

          2.反捺:類似長(zhǎng)點(diǎn),由輕到重向右下方頓下回鋒收筆。一個(gè)字中如果出現(xiàn)兩個(gè)捺時(shí),把次要的捺寫成反捺。例如“食”字的最后一筆、‘炎” 字的第四筆。

          例:炎食從以泰秦送

          3.平撩:起筆先逆入筆寫小短橫再向右下方約20*角曲運(yùn)筆,由輕到重,至底部時(shí)頓筆,而后由重漸輕,向右前方提筆出鋒。一筆之內(nèi)要體現(xiàn)一波三折。例如“之”字。

          例:之芝這達(dá)途運(yùn)迷

          三、撇捺組合:

          撇、捺畫(huà)和橫豎組合一樣, 在書(shū)寫當(dāng)中經(jīng)常搭配使用,我們也把它們組合起來(lái),形成固定搭配,找出它們的組合規(guī)律,一般有以下三種組合形式:

          (一)連接:這種組合夾角約為90度。如果組合放在上下結(jié)構(gòu)中,撇捺左右伸展,決定字的寬度,是主筆,則其他筆畫(huà)縮短。例如“木"字;如果放在左右結(jié)構(gòu)中,在左邊撒長(zhǎng)捺短,以讓右,例如“舒”字:在右邊撇短撩長(zhǎng),以讓左,例如“檢”字。

          例:人全舍靈舒斜檢驗(yàn)拾

          (二)分離:這種組合用在“八”,“分”等字內(nèi),撇捺伸展為主筆。

          例:八分盆貧芬

          (三)交叉:撇捺伸展在字中做主筆,交叉點(diǎn)一般都處在字的重心線上,而且交點(diǎn)寧靠上不靠下,即所圍成的空白寧小勿大。

          例:又義文交冬條各爺爸

          (四)撇捺組合與其他筆畫(huà)的搭配關(guān)系:

          1.與橫的搭配:當(dāng)撒捺組合與橫畫(huà)搭配使用時(shí),撇用豎撒,橫畫(huà)縮短,撇捺伸展。(特別強(qiáng)調(diào):春字頭三橫要短,撇捺的交點(diǎn)在第二個(gè)橫上,為下面的部分留出書(shū)寫空間。)

          例:大夫夾春秦

          2、與豎的搭配:撒捺收筆處一般比豎畫(huà)略高。好比腿和裙子的關(guān)系,一般情況下,裙底邊線應(yīng)比腳高一些:撇捺在豎畫(huà)的左右兩側(cè)呈對(duì)稱狀。

          例:禾未米衣表


          轉(zhuǎn)自:新翰丹 https://www.xinhandan.net/cms/show-4896.html


          主站蜘蛛池模板: 一区二区三区视频免费观看| 中文字幕精品无码一区二区| 在线电影一区二区| 久久久久人妻精品一区| 一区二区三区视频在线| 久久精品免费一区二区三区| 久久精品无码一区二区日韩AV| 免费无码一区二区三区蜜桃大 | 精品无码一区二区三区电影| 视频一区二区在线观看| 丰满人妻一区二区三区视频53| 女同一区二区在线观看| 精品视频一区二区三区| 91久久精品国产免费一区| 欧美激情国产精品视频一区二区| 78成人精品电影在线播放日韩精品电影一区亚洲| 久久综合精品国产一区二区三区| 亚洲一区二区三区高清| 国产成人一区二区动漫精品| 狠狠色成人一区二区三区| 水蜜桃av无码一区二区| 日韩成人一区ftp在线播放| 日本一区二区三区在线视频观看免费 | 女人18毛片a级毛片一区二区| 色噜噜狠狠一区二区| 高清一区二区三区| 亚洲一区精彩视频| 射精专区一区二区朝鲜| 日本一区二区三区日本免费| 91在线精品亚洲一区二区| 中文字幕亚洲乱码熟女一区二区 | 久久久久国产一区二区三区| 91午夜精品亚洲一区二区三区 | 国产精品亚洲产品一区二区三区 | 无码毛片视频一区二区本码| 亚洲一区中文字幕久久| 国产精品福利一区二区| 日韩美女视频一区| 中文字幕一区精品| 香蕉免费一区二区三区| 精品无码国产AV一区二区三区|